动态更改样式表路径在IE和Firefox中不起作用

Ada*_*ile 4 javascript css ajax

我有以下文件:

<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>
Run Code Online (Sandbox Code Playgroud)

注意:忽略d.getTime()调用......这些只是为了解决IE没有从AJAX调用加载新页面的问题,因为它的缓存方案过于激进.

基本上,当它在/ DOC重新加载文件时,应该将当前样式表设置为/ CSS ... DOC和CSS中的文件并不断变化.

奇怪的是,在Chrome中,它的效果非常好.DOC在"content"div中加载,样式表设置为CSS,并且css应用于页面.我可以使用CSS页面进行更改并使用5秒钟,当页面刷新时,CSS也会刷新.

但是在IE和Firefox中,HTML会加载,我可以看到样式表链接IS的href属性变为"/ CSS + getTime()"但是,当加载HTML时,css 永远不会应用于页面.我甚至可以更改DOC的内容并更新,但css从未应用过.它只是一个无风格的页面.

Firefox和IE不支持以这种方式更改样式表引用吗?有一个更好的方法吗?

Joe*_*orn 6

不要在单个链接中更改工作表,而是尝试使用备用样式表.使用备用样式表查看此链接:

http://www.alistapart.com/articles/alternate/