注意:抱歉,我还没有支持这篇文章的代码(仅限敏感的生产代码)。如果以后时间允许,我将尝试提供一个简洁的工作示例。我想发表这篇文章,希望它可以为其他人提供追踪类似问题的提示。
使用
- 互联网浏览器 9。
- jQuery 1.9.2 和 2.0.0。
- HTML5 文档类型
设想
- 我有一个页面分成逻辑“屏幕”。
- 每个屏幕都是一个由类名(例如“formScreen”、“errorScreen”、“confirmationScreen”)标识的 DIV。
- “.formScreen”包含表单(数据输入)字段,整个页面有单个提交按钮,该按钮从表单数据生成 JSON 包并执行 AJAX 回发。
- 我“以某种方式”填写表格(我填写表格的顺序似乎有所不同),然后提交。
- 提交收到响应后,代码会更新显示。
问题
提交后隐藏所有“formScreen”DIV 会导致 IE9 完全崩溃。
最初我定义了一个 formScreens 变量:
var formScreens = $(".formScreens");
然后稍后调用:
$(formScreens).hide();
这会导致 IE 崩溃。
我还尝试了以下方法,这两个选项也会导致崩溃:
var copyOfFormScreens = $("div.formScreen");
$(copyOfFormScreens).each(function ()
{
$(this).hide(); // Option 2: This fails too.
$(this).css("display", "none"); // Option 3: This fails too.
});
IE 崩溃错误
IE 崩溃时返回以下内容:
问题签名: 问题事件名称:APPRCASH 应用程序名称:IEXPLORE.EXE 应用程序版本:9.0.8112.16496 申请时间戳:51a55c6d 故障模块名称:MSHTML.dll 故障模块版本:9.0.8112.16496 故障模块时间戳:51a55ff0 异常代码:c00000fd 异常偏移量:0032ef01 操作系统版本:6.1.7601.2.1.0.256.48 区域 ID:3081 附加信息 1:39a4 附加信息 2:39a4d7f18c1c7c725934453009d2f1b9 附加信息 3:ddcf 附加信息 4:ddcfafd1b35f05f847ac8d3e7a7bcf12
在 Visual Studio 中调试时如下:
iexplore.exe 中 0x6302EF01 (mshtml.dll) 处的未处理异常:0xC00000FD:堆栈溢出(参数:0x00000001、0x02432F68)。 iexplore.exe 中 0x630A172B (mshtml.dll) 处的未处理异常:0xC0000005:访问冲突写入位置 0x02430FFC。// 按调试“继续”时,此错误继续显示。