Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅当站点位于本地主机上时,仅当启用javascript时,仅在IE8模式下重新加载时IE8崩溃_Javascript_Jquery_Visual Studio 2010_Internet Explorer 8_Localhost - Fatal编程技术网

仅当站点位于本地主机上时,仅当启用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
当我通过VisualStudio在localhost上运行站点时,IE设置为IE8模式并启用javascript,当页面重新加载时,浏览器将崩溃。当URL更改或选项卡/窗口关闭时,它不会崩溃。我得到的信息是:

VS JIT消息:

iexplore.exe[某些PID]中发生未经处理的win32异常

使用VS调试时出错:

iexplore.exe中0x3fa078d8处的未处理异常:0xC0000005:访问冲突读取位置0x00000008

调用堆栈位置:mshtml.dll!3fa078d8()

3FA078D8 mov eax,dword ptr[ebx+8]

当我取消调试时,页面通常会在选项卡中正常加载。我时不时会收到“我们无法将您返回到您正在查看的页面”的消息

为了让它更有趣,这只发生在站点的主页上,并且不能在DEV服务器上复制。切换到IE7模式使崩溃永远不会发生。或者注释掉页面底部加载的一些javascript文件


我试着在禁用插件的情况下运行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个小时了。这就解决了问题。谢谢