gpt4 book ai didi

IE9 中的 JavaScript 缓存问题?

转载 作者:行者123 更新时间:2023-11-28 10:18:38 27 4
gpt4 key购买 nike

我在使用 Javascript 隐藏元素时遇到问题。

我使用事件处理程序在页面完全加载时调用一些 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() {

}

在 myFunc() 函数中,我得到一个具有特定 id 的 div 元素,比如说“testdiv”,然后使用以下方法隐藏它: .style.display = "none";整行JS看起来像这样:

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

这在 IE6-IE8 和所有其他常见浏览器中就像一个魅力,但在 IE9 中,如果我第一次查看页面,div 不会隐藏。如果我刷新页面,div 就会被隐藏!那么这种情况下有什么问题吗?!

感谢您的帮助:)

最佳答案

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

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

事实证明,IE 认为它已经缓存了整个页面,而实际上它不知何故错过了我的一些脚本。因此,当从缓存渲染时,它无法加载文件并默默地忽略它们。它有助于将一些随机查询参数附加到 JS URL,以便 IE 会认为它们是动态的并且不会尝试缓存它们。

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

关于IE9 中的 JavaScript 缓存问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6069252/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com