【发布时间】: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-attachment 或 background-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