Проблема кеширования Javascript в IE9? - PullRequest
1 голос
/ 20 мая 2011

У меня проблема с использованием Javascript для скрытия элемента.

Я использую Eventhandler для вызова некоторых JS, когда страница полностью загружена, Eventhandler выглядит следующим образом:

if (window.addEventListener) {
    window.addEventListener("click", _onclick_handler, false);
    document.addEventListener("DOMContentLoaded", _onload_handler, false);
    window.addEventListener("resize", _onresize_handler, false);
    window.addEventListener("keyup", _onkeyup_handler, false);
}
else if(document.attachEvent) {
    document.attachEvent('onclick', _onclick_handler);
    window.attachEvent('onload', _onload_handler);
    window.attachEvent('onresize', _onresize_handler);
    document.attachEvent('onkeyup', _onkeyup_handler);
}

function _onclick_handler() {

}

function _onload_handler() {
    myFunc();
}

function _onresize_handler() {

}

function _onkeyup_handler() {

}

В функции myFunc () я получаю элемент div с определенным идентификатором, скажем «testdiv», а затем скрываю его, используя: .style.display = «none»; Вся линейка JS выглядит так:

document.getElementById("testdiv").style.display = "none;

Это работает как чудо в IE6-IE8 и во всех других распространенных браузерах, но в IE9 div не скрывается, если я просматриваю страницу в первый раз. Если я обновлю страницу, div будет скрыт! Так в чем же проблема в этом случае?!

Спасибо за помощь:)

1 Ответ

0 голосов
/ 20 мая 2011

В каком порядке и файлах определены myFunc() и eventListeners?DOMContentLoaded срабатывает до загрузки любого внешнего ресурса.Между событием и определением myFunc() может быть условие гонки, зависящее от того, поступает ли страница из кэша (быстрее) или с сервера (медленнее).

Кроме того, у меня была доляПроблемы с кэшированием в IE и JS (см. Мой вопрос 5717206 ), где динамическое содержимое, генерируемое сценарием, будет отображаться только после обновления страницы.

Оказалось, что IE думал, что кэшировал всю страницув то время как он на самом деле как-то пропустил некоторые из моих сценариев.Поэтому при рендеринге из кэша он не мог загружать файлы и молча игнорировал их.Это помогло добавить некоторые случайные параметры запроса к URL-адресам JS, чтобы IE считал их динамическими и не пытался их кэшировать.

Чтобы проверить, есть ли у вас этот сценарий, когда DIV не скрыт, простооткройте инструменты IE Dev и посмотрите, сможете ли вы вручную вызвать myFunc().

...