2010-10-01 55 views
1

我试过了几个不同的Windows 7计算机上使用Internet Explorer 8的以下HTML代码,并且在任何地方都会导致Internet Explorer崩溃。我一直无法用IE7或IE8的Windows XP重现这一点。使Internet Explorer 8崩溃的简单网页

<!doctype html> 

<head> 
<title>Crashes IE8 on Win7</title> 
<style> 
article { display: block; } 
</style> 
<script> 
document.createElement('article'); 
document.createElement('nav'); 

function initialize() { 
    var map = new google.maps.Map(document.getElementById("map_canvas"), {}); 
} 

function loadScript() { 
    var script = document.createElement("script"); 
    script.type = "text/javascript"; 
    script.src = "http://maps.google.com/maps/api/js?sensor=false&callback=initialize"; 
    document.body.appendChild(script); 
} 

window.onload = loadScript; 
</script> 
</head> 
<body> 

<nav><ul><li> 
    <div id="map_canvas"></div> 
    <article> 
</li></ul></nav> 

</body> 

唯一真正错误页面,是缺少</article>标签。其余全部都需要让IE崩溃。我敢肯定,我可以通过反汇编Google Maps API来进一步缩小它,但对我来说这太过分了。

其他人可以重现这个,或者是他们的一些奇怪的配置,只适用于我测试过的所有机器?

编辑:为了更清楚,我是而不是寻找修复我的代码。 (修复方法是:添加丢失的</article>标记。)我正在查看是否这会使Win7上的IE8崩溃,也可能是因为我了解崩溃通常可以用来控制受害计算机。

+0

有趣的是,似乎并没有在Windows XP上崩溃IE 8。您是否尝试添加''标记? – 2010-10-01 14:00:17

+0

我在Win7上用IE8试了一下,确实崩溃了。如果我添加ARTICLE的结束标记,它不会崩溃。绝对应该向MS报告。我记得如果遇到@import标记,Netscape的旧日崩溃。 – netrox 2010-10-02 23:41:30

+1

任何知道*如何*向Microsoft报告此问题的人? :) – Peter 2010-11-12 10:06:50

回答

0

我可以在Windows 7上使用IE8复制您的问题。它可能与this post有关,这表明该问题是由在页面加载完成之前尝试修改元素引起的。如果是这种情况,您可以通过在页面加载完成后使用jQuery调用loadScript方法来解决问题。例如。

<script> 
    $().ready(function() { 
     loadScript(); 
    }); 
</script> 
+0

感谢您的建议,但没有,仍然崩溃的浏览器... – Peter 2010-10-01 13:09:48

+0

对不起,我也应该说你需要注释掉window.onload = loadScript行。我建议的修复工作,当我尝试它 – 2010-10-01 15:40:16

+0

奇怪,我试过了(我没有删除window.onload行),但它仍然崩溃。不过,请记住,我不是在寻找修复我的代码的方法。 – Peter 2010-10-02 18:05:02

0

尝试将脚本移动到页面底部。

我会还收拾以下:

  • 体内
  • 删除非HTML代码添加开闭& HTML标记

这个工作对我来说:

<!doctype html> 
<html> 
<head> 
<title>Crashes IE8 on Win7</title> 
<style type="text/css"> 
article { display: block; } 
</style> 

</head> 
<body> 

<div id="map_canvas"></div> 

<script type="text/javascript"> 
document.createElement('article'); 
document.createElement('nav'); 

function initialize() { 
    var map = new google.maps.Map(document.getElementById("map_canvas"), {}); 
} 

function loadScript() { 
    var script = document.createElement("script"); 
    script.type = "text/javascript"; 
    script.src = "http://maps.google.com/maps/api/js?sensor=false&callback=initialize"; 
    document.body.appendChild(script); 
} 
window.onload = loadScript; 
</script> 
</body> 
</html> 
+0

Hi Space Monkey。感谢您的回复。不过,我想你错误地理解了我发布的理由。我不在寻找修复我的HTML代码。我甚至在原帖中写下了修复。我想你可以说我唯一的问题是,如果这也让其他人崩溃IE浏览器。我应该更清楚一点;我想知道是否应该在某处报告,因为崩溃通常是网络攻击的切入点。 – Peter 2010-10-02 17:58:26

+0

啊,ooops。好吧,我可以确认原始代码确实崩溃了我的IE8。但是,我不认为这是可以报告的事情,因为代码本身被故意破坏。 – 2010-10-06 08:52:15