仅当站点位于本地主机上时,仅当启用javascript时,仅在IE8模式下重新加载时IE8崩溃
以下是版本:仅当站点位于本地主机上时,仅当启用javascript时,仅在IE8模式下重新加载时IE8崩溃,javascript,jquery,visual-studio-2010,internet-explorer-8,localhost,Javascript,Jquery,Visual Studio 2010,Internet Explorer 8,Localhost,以下是版本: IE 8.0.6001.18702 Visual Studio Web Developer 2010 10.0.40219.1.SP1Rel .Net 4.0.30319 SP1Rel jQuery 1.6.2 当我通过VisualStudio在localhost上运行站点时,IE设置为IE8模式并启用javascript,当页面重新加载时,浏览器将崩溃。当URL更改或选项卡/窗口关闭时,它不会崩溃。我得到的信息是: VS JIT消息: iexplore.exe[某些PID]中
- IE 8.0.6001.18702
- Visual Studio Web Developer 2010 10.0.40219.1.SP1Rel
- .Net 4.0.30319 SP1Rel
- jQuery 1.6.2
我试着在禁用插件的情况下运行IE8,但崩溃仍然会发生。我尝试在启用Fiddler的情况下运行,但它仍然崩溃。我认为崩溃可能与使用
window.setTimeout()
和window.setInterval()
有关,因为它们似乎是跨不同JS文件使用的唯一常见功能,在注释掉时会导致项目停止崩溃。在我们的global.js中,我添加了以下代码:
(function (w) {
w.windowBind = function (eventName, handler) {
if (w.attachEvent) {
w.attachEvent("on" + eventName, handler);
} else if (w.addEventListener) {
w.addEventListener(eventName, handler, false);
}
};
var timeoutsToExpire = [],
expireTimeouts = function () {
for (var i = 0, l = timeoutsToExpire.length; i < l; i++) {
w.clearTimeout(timeoutsToExpire[i]);
}
timeoutsToExpire = [];
},
intervalsToExpire = [],
expireIntervals = function () {
for (var i = 0, l = intervalsToExpire.length; i < l; i++) {
w.clearInterval(intervalsToExpire[i]);
}
intervalsToExpire = [];
};
w.setExpiringTimeout = function (func, time) {
var id = w.setTimeout(func, time);
timeoutsToExpire.push(id);
return id;
};
w.setExpiringInterval = function (func, time) {
var id = w.setInterval(func, time);
intervalsToExpire.push(id);
return id;
};
w.windowBind("unload", function () {
// expire timers
expireTimeouts();
expireIntervals();
});
w.windowBind("beforeunload", function () {
// expire timers
expireTimeouts();
expireIntervals();
});
})(window);
(函数(w){
w、 windowBind=函数(事件名称、处理程序){
如果(w.attachEvent){
w、 attachEvent(“on”+事件名称,处理程序);
}否则如果(w.addEventListener){
w、 addEventListener(eventName,handler,false);
}
};
var timeoutsoexpire=[],
expireTimeouts=函数(){
for(var i=0,l=timeoutsoexpire.length;i
然后,我更新了以前的window.setTimeout()
和window.setInterval()
引用以使用这些帮助程序。这似乎暂时可以解决问题
更新:也许我发布得太快了,它又一次崩溃了。不过,它们现在似乎时断时续
更新2:好的,当我现在按住shift键并刷新时,它似乎可靠地发生了,呃
更新3:试用了最新的jQuery RC,崩溃消失了,发行说明中提到了2个IE8崩溃错误:不错的一个。这只在您的工作站上发生?我的意思是,你说它不是在DEV服务器上复制的,而是在另一台windowsxp/vista/7工作站上复制的?重启后?我认为它看起来像是内存有缺陷或类似的东西……哦,每个从事该项目的开发人员都能够复制它。:-)我在一个JS重磅应用程序中也有同样的错误。在阅读您关于jQuery 1.6.3的更新之前,我已经尝试隔离这个bug 1-2个小时了。这就解决了问题。谢谢