gpt4 book ai didi

javascript - IE9 没有运行 javascript onload

转载 作者:搜寻专家 更新时间:2023-11-01 04:44:46 27 4
gpt4 key购买 nike

由于某种原因,当浏览器首次启动该 session 时,IE9 没有运行我的 JavaScript 代码 onload。它似乎只在用户刷新页面后才运行onload。它还会在调试控制台打开时运行 JavaScript。

如何使 JavaScript 在浏览器打开后运行 onload?这只是 IE9 的一个错误吗?

我将重申这一点以便您理解:如果您在启动新的浏览器 session 后访问该站点,代码不会运行。如果您在新选项卡中打开网站、重新加载页面或打开调试控制台,代码运行

这是我用来运行脚本 onload 的函数(在NORMAL 浏览器中运行良好):

(function (i) {
var u = navigator.userAgent;
var e = /*@cc_on!@*/
false;
var st = setTimeout;
if (/webkit/i.test(u)) {
st(function () {
var dr = document.readyState;
if (dr == "loaded" || dr == "complete") {
i()
} else {
st(arguments.callee, 10);
}
}, 10);
} else if ((/mozilla/i.test(u) && !/(compati)/.test(u)) || (/opera/i.test(u))) {
document.addEventListener("DOMContentLoaded", i, false);
} else if (e) {
(function () {
var t = document.createElement('doc:rdy');
try {
t.doScroll('left');
i();
t = null;
} catch (e) {
st(arguments.callee, 0);
}
})();
} else {
window.onload = i;
}
})(init); //init is the function to call onload

最佳答案

我遇到了和你完全一样的问题。我有一组图像,我想确保在开始幻灯片放映之前预加载这些图像。我正在利用

$(window).load(function(){
//All my code
});

这正是我所面对的。

  • 当我在 IE 中复制并粘贴 URL 时,onload 事件似乎没有触发。
  • 如果我使用 F12 打开控制台,然后在浏览器中输入 URL 并按下回车键,一切似乎都正常。
  • 既然我至少打开了一次控制台,
    • 如果我关闭控制台然后重新加载页面,则会触发 onload。
    • 如果我输入 URL 然后按下回车键,就会触发 onload。

我花了几天时间才真正弄清楚我做错了什么。

问题出在 console.log 语句上。在我的代码的很多地方,我做了很多控制台日志记录。甚至我使用的插件之一 - jplayer 在代码中的某处有一条未注释的控制台消息。

问题是,除非您在 IE 中至少打开一次控制台,否则控制台对象不可用。这意味着代码将在遇到第一个 console.log 时失败。

现在,我没有心情为了在 IE 中测试它而注释掉我所有的 console.log 语句。所以,这就是我所做的。在我的 document.ready jquery 函数的顶部,我写了这段代码。

if(!window.console){
console={};
console.log = function(){};
}

它基本上做的是创建一个虚拟的 console.log 函数占位符,以便代码可以在 IE 中运行,但只有当 console.log 是您在代码中使用的唯一控制台函数时它才会工作,或者在你的插件中。

只是我的 2 美分。在这个问题上纠结的时间比我承认的要长。我希望这至少对某人有用。

关于javascript - IE9 没有运行 javascript onload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10961430/

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