【发布时间】:2013-08-05 04:55:41
【问题描述】:
注意: 抱歉,我还没有支持这篇文章的代码(仅限敏感的生产代码)。如果以后时间允许,我将尝试提供一个简洁的工作示例。我想发表这篇文章,希望它可以为其他人提供追踪类似问题的提示。
使用
- Internet Explorer 9。
- jQuery 1.9.2 和 2.0.0。
- HTML5 文档类型
场景
- 我将页面拆分为逻辑“屏幕”。
- 每个屏幕都是一个由类名标识的 DIV(例如“formScreen”、“errorScreen”、“confirmationScreen”)。
- “.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。 // 按调试“继续”时继续显示此错误。【问题讨论】:
-
仅供参考,这样做有点愚蠢:
var formScreens = $(".formScreens");,然后是:$(formScreens).hide();。第二行代码应该只是formScreens.hide(),因为formScreens已经是一个 jQuery 对象。
标签: javascript jquery internet-explorer-9