У меня есть следующий файл:
<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 «content», и таблица стилей устанавливается на CSS, и эта CSS применяется к странице. Я могу изменить с помощью страницы CSS и в течение 5 секунд, когда страница обновляется, CSS также обновляется.
Но в IE и Firefox HTML-код загрузится, и я вижу, что атрибут href ссылки таблицы стилей IS меняется на "/ CSS + getTime ()", но пока загружается HTML-код, CSS никогда не применяется к странице. Я даже могу изменить содержимое DOC, и оно обновляется, но CSS никогда даже не применяется. Это просто страница без стиля.
Firefox и IE не поддерживают изменение ссылки на таблицу стилей таким способом?
Есть ли лучший способ сделать это?