Cha*_*III 4 javascript internet-explorer-9
出于某种原因,当第一次启动浏览器时,IE9没有运行我的JavaScript代码onload.它似乎只在用户刷新页面后运行onload.它还将在调试控制台打开时运行JavaScript.
如何使JavaScript在浏览器打开后运行onload?这只是IE9的一个错误吗?
我将重申这一点,以便您理解:如果您在启动新的浏览器会话后访问该站点,则代码不会运行.代码DOES,如果你在新标签中打开该网站,或重新载入页面,或打开调试控制台运行
这是我用来运行脚本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
Run Code Online (Sandbox Code Playgroud)
Rya*_*yan 14
我遇到了与你完全相同的问题.在我开始幻灯片放映之前,我想要确保预先加载了一组图像.我正在利用
$(window).load(function(){
//All my code
});
Run Code Online (Sandbox Code Playgroud)
而这正是我所面对的.
我花了几天时间才弄明白我做错了什么.
问题出在console.log语句中.在我的代码中的很多地方,我做了很多控制台日志记录.甚至我正在使用的一个插件 - jplayer在代码中的某处有一个未注释的控制台消息.
问题是,除非您在IE中至少打开一次控制台,否则控制台对象不可用.这意味着代码将在遇到的第一个console.log时失败.
现在,我没有心情在IE浏览器中评论所有我的console.log语句.所以,这就是我所做的.在我的document.ready jquery函数的顶部,我写了这段小代码.
if(!window.console){
console={};
console.log = function(){};
}
Run Code Online (Sandbox Code Playgroud)
它基本上做的是创建一个虚拟的console.log函数占位符,以便代码可以在IE中运行,但只有console.log是您在代码或插件中使用的唯一控制台函数时它才会起作用.
只需2美分.在这个问题上拉我的头发的时间超过了我承认的时间.我希望这对至少某人有用.
归档时间: |
|
查看次数: |
19563 次 |
最近记录: |