用Opera加载jQuery后

时间:2011-06-21 16:37:39

标签: jquery html css background opera

我发帖加载jQuery,它在 Opera (仅限Opera)中导致CSS错误。我创建了一个JSFiddle来演示。

使用一些CSS来设置HTML和BODY标签的样式,例如:

html {
    background: #6B9AB6;
}

body {
    background: white;
    max-width: 10em;
}

然后发布加载jQuery(使用简单的setTimeout进行演示):

setTimeout(function(){

    var script_tag = document.createElement('script');
    script_tag.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js';

    var script_sib = document.getElementsByTagName('script')[0];
    script_sib.parentNode.insertBefore(script_tag, script_sib);

}, 2000);

导致显示正确的CSS,然后闪烁到无样式的HTML标记。使用Opera的DragonFly并更改background-attachmentbackground-origin动态修复此问题。如果以编程方式执行此操作,则情况并非如此。

有没有办法让Opera使用postloaded jQuery行事?如果您有任何想法,请随意更新JSFiddle。

1 个答案:

答案 0 :(得分:3)

它在jQuery 1.6版中的回归; jQuery version 1.5.2 works just fine

目前Adert​​y有is a patch

  

可以在jquery-1.6.1.js的ligne [行号] 1288上解决该错误。

     

替换:

     

“documentElement.insertBefore(body,documentElement.firstChild);”

     

通过

     

“documentElement.appendChild(body);”

如果您自己托管图书馆,那就会产生奇迹。

编辑:版本1.6.2修复了此问题(目前位于jQuery's GIT repo中)。