3

我有一个在 Chrome 和 FireFox 中完美运行的 Web 应用程序,但在 IE 中崩溃。请注意,这不是 JavaScript 错误,而是 iexplore.exe 进程实际上崩溃了。

代码贴在下面。这将在 IE9 中崩溃(单击按钮时)。反转 JavaScript 或更改 CSS 可能会消除问题,但要意识到这是从一个大得多的应用程序中减少的代码,不能以这种方式轻松更改(例如,在实际应用程序中,两个 JavaScript 命令是在两个不同的函数中调用——第二个函数根据第一个函数的结果有条件地运行)。我什至不确定我的问题是什么,除了“有没有办法让微软快速修补这个问题?” 我有兴趣听听人们的想法:

<!DOCTYPE html>
<html>
    <head>
        <title>IE Crash</title>
    </head>
    <body>
        <div id="dvStep11" style="width:500px;">
            <label for="inpDOB">Date of Birth (mm/dd/yyyy)</label>
            <input type="text" id="inpDOB" style="width:350px;" />
        </div>
        <button onclick="document.getElementById('inpDOB').value = '12/7/1971';document.getElementById('dvStep11').style.display='none';">Click here</button>
    </body>
</html>

编辑:我已经向微软开立了一个案例,并正在与那里的开发团队成员一起工作。当我收到更多信息时,我会更新这个。

4

2 回答 2

9

Microsoft 已向我确认这是 IE9 渲染引擎中的错误。根据我的进一步研究,这与父 DIV 的宽度与 INPUT 的宽度相结合会导致 INPUT 换行这一事实有关。由于某种原因,在这种情况下,当为 INPUT 赋值并立即隐藏父 DIV 时,IE 崩溃。

微软建议我通过这行代码强制 IE 使用 IE8 渲染引擎(不会崩溃):

<meta http-equiv="X-UA-Compatible" content="IE=8" />

但是,我发现,我也可以通过将 INPUT 包装在其自己的非样式化 DIV 或 SPAN 中来避免该问题。这是首选,因为除了这个错误之外,IE9 渲染引擎比 IE8 更好(并且更快)。

于 2012-04-11T12:25:51.610 回答
0

有趣的是,IE9 带来的调试器在断点、变量跟踪等方面非常有用,所以我会尝试看看是否有帮助。(如果你能获得 IE9;我不确定 IE 7 和 8 中的开发工具)。

于 2012-04-09T22:34:29.597 回答