Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IE6投掷“;“访问被拒绝”;连接到styleSheet.cssText时_Javascript_Css_Cross Browser_Internet Explorer 6 - Fatal编程技术网

Javascript IE6投掷“;“访问被拒绝”;连接到styleSheet.cssText时

Javascript IE6投掷“;“访问被拒绝”;连接到styleSheet.cssText时,javascript,css,cross-browser,internet-explorer-6,Javascript,Css,Cross Browser,Internet Explorer 6,有一个动态创建的标记,我正在将另外一段css连接到它。这是动态加载模块的更大框架的一部分 最初它创建了新的样式标记,但由于著名的“31样式表限制”,这不再是一个选项,因此我决定回收现有的样式标记(除非它们包含太多的规则,或者如果新字符串包含@import,那么无论如何都必须创建一个新的样式标记) 无论如何,我在所有主流浏览器(FF2+、Chrome14+、Opera10+、IE7+、Safari 4.0+)中都能使用它,现在IE6让我头疼 我对其他场景中的错误很熟悉,但我从未见过这种情况。另外,

有一个动态创建的
标记,我正在将另外一段css连接到它。这是动态加载模块的更大框架的一部分

最初它创建了新的样式标记,但由于著名的“31样式表限制”,这不再是一个选项,因此我决定回收现有的样式标记(除非它们包含太多的规则,或者如果新字符串包含@import,那么无论如何都必须创建一个新的样式标记)

无论如何,我在所有主流浏览器(FF2+、Chrome14+、Opera10+、IE7+、Safari 4.0+)中都能使用它,现在IE6让我头疼

我对其他场景中的错误很熟悉,但我从未见过这种情况。另外,我很清楚这一点,不要打扰任何IE6时间。但不幸的是,这是一个例外情况,仍然需要IE6支持


请注意,括号计数仅用于估计和调试目的。try/catch与
cssText+=
无关最初,我添加它是因为我发现它在IE6中引发了异常。

我找到了我自己问题的答案。事实证明IE6有一个模糊的安全措施,不允许操纵由其他脚本间接创建的元素(即使它们来自完全相同的源/域)

在这种情况下,系统工作正常,但失败了。唯一的区别是,实际代码使用jQuery存储数据、创建元素和插入元素。最后一个动作(插入元素)就是问题所在

我变了

        /**
         * @param {jQuery|HTMLElement} $nextnode
         */
        function addStyleTag( text, $nextnode ) {
            var s = document.createElement( 'style' );
            // IE: Insert into document before setting cssText
            if ( $nextnode ) {
                // If a raw element, create a jQuery object, otherwise use directly
                if ( $nextnode.nodeType ) {
                    $nextnode = $( $nextnode );
                }
                $nextnode.before( s );
                /* ... */
致:


这就解决了问题。

没有IE6的时候了,但我感觉到了你的痛苦。你真的应该放弃对IE6的支持。。。这是我们开发者的癌症!我感觉到你,但IE6流量在这里(Wikio.Org,维基媒体基金会,非营利性),不幸的是,仍然太大。上个月IE6点击量超过14亿次(短期),约占总流量的2.2%。IE6中有趣的(普通的)作品(抽象的)没有。我认为普林西比本身不会错,结果证明我是对的。现在我不得不缩小导致它的范围。
        /**
         * @param {jQuery|HTMLElement} nextnode
         */
        function addStyleTag( text, nextnode ) {
            var s = document.createElement( 'style' );
            // IE: Insert into document before setting cssText
            if ( nextnode ) {
                // If a jQuery object, get raw element, otherwise use directly
                if ( nextnode.jquery ) {
                    nextnode = nextnode.get( 0 );
                }
                nextnode.parentNode.insertBefore( s, nextnode );
                /* ... */