IE9中的Javascript缓存问题?

IE9中的Javascript缓存问题?,javascript,caching,hide,internet-explorer-9,onload,Javascript,Caching,Hide,Internet Explorer 9,Onload,我在使用Javascript隐藏元素时遇到问题 我使用Eventhandler在页面完全加载时调用一些JS,Eventhandler如下所示: if (window.addEventListener) { window.addEventListener("click", _onclick_handler, false); document.addEventListener("DOMContentLoaded", _onload_handler, false); windo

我在使用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() {

}
document.getElementById("testdiv").style.display = "none;
在myFunc()函数中,我得到一个具有特定id的div元素,比如说“testdiv”,然后使用:.style.display=“none”隐藏它;JS的整行代码如下所示:

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() {

}
document.getElementById("testdiv").style.display = "none;
这在IE6-IE8和所有其他常见浏览器中都很有用,但在IE9中,如果我第一次查看页面,div就不会隐藏。如果我重新刷新页面,div将隐藏!那么这个案子有什么问题


帮助提示:)

myFunc()和eventListeners是按什么顺序定义的
DOMContentLoaded
在加载任何外部资源之前激发。 事件和
myFunc()
的定义之间可能存在竞争条件,这取决于页面是来自缓存(更快)还是来自服务器(更慢)

此外,我也遇到过IE和JS缓存问题(请参阅我的问题),脚本生成的动态内容只有在刷新页面后才会呈现

原来IE以为它缓存了整个页面,而实际上它却不知何故遗漏了我的一些脚本。因此,当从缓存进行渲染时,它无法加载文件,并以静默方式忽略它们。它有助于将一些随机查询参数附加到JS URL,以便IE认为它们是动态的,而不会试图缓存它们


要测试您是否有这种情况,当DIV没有隐藏时,只需打开IE-Dev-tools,看看您是否可以手动调用
myFunc()

Thx以获得答案!首先加载myFunc(),然后加载EventListener。如果我手动调用myFunc,div就会消失。。。废话IE9:DCrap真的!这些是外部文件本身吗?也许这件事已经发生了?