2010-10-01 58 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