【问题标题】:Post loading jQuery with Opera使用 Opera 加载 jQuery
【发布时间】:2011-06-21 16:37:39
【问题描述】:

我正在加载 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 处理后加载的 jQuery?如果您有任何想法,请随时更新 JSFiddle。

【问题讨论】:

  • 我不知道这个问题的答案,但是 IE8 有类似的东西 - stackoverflow.com/questions/6149820/weird-ie8-layout-glitch,但这似乎与这里无关。
  • 你试过$('<script src="..." />').appendTo('head'); 否则你应该在你想加载它的时候用google api ..
  • 您是否尝试过从 HTML 选择器中移除背景颜色?
  • @Kyle Sevenoaks - 在我更改背景颜色时需要 HTML 选择器[u]r。
  • @Val - 它有效。 jsfiddle.net/39DQJ/5 - 因为它不加载 jQuery,所以 $() 仅在加载 jQuery 后可用。问题是当加载 jQuery 时,HTML 背景颜色消失了。

标签: jquery html css background opera


【解决方案1】:

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

现在有 is a patch by Adert​​y:

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

替换:

"documentElement.insertBefore(body, documentElement.firstChild);"

通过

"documentElement.appendChild(body);"

如果您是自托管库,这会很有效。

编辑: 1.6.2 版修复了这个问题(目前在jQuery's GIT repo 中)。

【讨论】:

  • 有趣。毕竟和 IE8 差不多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-10
  • 2010-11-01
  • 2012-06-06
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
相关资源
最近更新 更多