我的网络应用程序在Chrome和FireFox中运行良好,但在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>
编辑:我已经与微软开了个案,我正在与一个开发团队成员合作。我会在收到更多信息后对此进行更新。
答案 0 :(得分:9)
微软向我确认这是IE9渲染引擎中的一个错误。根据我的进一步研究,它与父DIV的宽度结合INPUT的宽度导致INPUT包裹的事实有关。出于某种原因,在这种情况下,当为INPUT分配值并立即隐藏父DIV时,IE崩溃。
Microsoft建议我强制IE使用这行代码使用IE8渲染引擎(不会崩溃):
<meta http-equiv="X-UA-Compatible" content="IE=8" />
但是,我发现,我也可以通过将INPUT包装在自己的非固定DIV或SPAN中来避免这个问题。这是首选,因为除了这个bug之外,IE9渲染引擎比IE8更好(也更快)。
答案 1 :(得分:0)
有趣的是,调试器IE9带来的断点,变量跟踪等非常有用,所以我会试着看看是否有任何帮助。 (如果你能得到IE9;我不确定IE 7和8中的开发工具。)