【发布时间】:2010-09-30 22:48:31
【问题描述】:
我有以下文件:
<html>
<head>
<title></title>
<link rel="css" type="text/css" href="/empty.css" title="css" />
<script type="text/javascript" src="/Prototype"></script>
<script type="text/javascript">
function load_content()
{
var d = new Date();
new Ajax.PeriodicalUpdater('content', '/DOC?'+d.getTime(),
{
method: 'post',
frequency: 5,
onSuccess: function(transport) {
for(i=0; (a = document.getElementsByTagName('link')[i]); i++)
{
if(a.getAttribute('rel') == 'css' && a.getAttribute("type") == 'text/css')
{
a.href = '/CSS?'+d.getTime();
}
}
}
});
}
</script>
</head>
<body>
<div id="content"></div>
<script type="text/javascript">
load_content();
</script>
</body>
</html>
注意:忽略 d.getTime() 调用...这些只是为了解决 IE 无法从 AJAX 调用加载新页面的问题,因为它的缓存方案过于激进。
基本上,当它在 /DOC 处重新加载文件时,它应该将当前样式表设置为 /CSS 处的文件...... DOC 和 CSS 都在不断变化。
奇怪的是,它在 Chrome 中运行良好。 DOC 在“内容” div 中加载,样式表设置为 CSS,并将 CSS 应用于页面。我可以用 CSS 页面更改,5 秒内刷新页面时,CSS 也会刷新。
但在 IE 和 Firefox 中,HTML 会加载,我可以看到样式表链接 IS 的 href 属性已更改为“/CSS + getTime()”,但是在加载 HTML 时,css 从不应用于页面。我什至可以更改 DOC 的内容并且它会更新,但 CSS 甚至从未应用过。它只是一个没有样式的页面。
Firefox 和 IE 不支持以这种方式更改样式表引用吗? 有没有更好的方法来做到这一点?
【问题讨论】:
标签: javascript css ajax