2010-10-01 6 views
1

J'ai essayé le code HTML suivant sur plusieurs ordinateurs Windows 7 différents avec Internet Explorer 8, et partout où cela bloque Internet Explorer. Je n'ai pas pu reproduire ceci avec IE7, ou sur Windows XP avec IE8.Page Web simple qui plante 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> 

Le seul réel bug dans la page, est la balise </article> manquante. Le reste est nécessaire pour faire planter IE. Je suis sûr que j'aurais pu le réduire davantage en démontant l'API Google Maps, mais cela a été un peu trop loin pour moi.

Est-ce que quelqu'un d'autre peut reproduire cela, ou est-ce que c'est une configuration bizarre qui ne s'applique qu'à toutes les machines sur lesquelles j'ai testé cela?

EDIT: Pour être plus clair, je suis pas à la recherche d'une solution à mon code. (Le correctif serait: ajouter la balise </article> manquante.) Je cherche si cela plante IE8 sur Win7 d'autres personnes aussi, et peut-être si je devrais signaler quelque part, car je comprends que les plantages peuvent souvent être utilisés pour prendre le contrôle d'un ordinateur victime.

+0

Ne semble pas planter IE 8 sur Windows XP, de façon intéressante. Avez-vous essayé d'ajouter les balises ''? –

+0

Je l'ai essayé sur mon Win7 avec IE8 et ça s'est bien crashé. Si j'ajoute l'étiquette de fin d'ARTICLE, elle ne s'est pas écrasée. Certainement devrait être signalé à MS. Je me souviens de l'époque où Netscape plantait dur s'il rencontrait la balise @import. – netrox

+1

Quiconque sait * comment signaler cela à Microsoft? :) – Peter

Répondre

0

Je peux répliquer votre problème en utilisant IE8 sur Windows 7. Il pourrait être lié à this post qui suggère que le problème est causé en essayant de modifier un élément avant que la page ait fini de charger. Si c'est le cas, vous pouvez résoudre le problème en utilisant jQuery pour appeler la méthode loadScript après le chargement de la page. Par exemple.

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

Merci pour la suggestion, mais pas encore qui bloque le navigateur ... – Peter

+0

Désolé, je devrais aussi avoir dit que vous devez commenter la ligne window.onload = loadScript. Le correctif que j'ai suggéré a fonctionné quand je l'ai essayé –

+0

Comme c'est bizarre, je l'ai essayé (et j'ai supprimé la ligne window.onload), mais il s'est tout de même écrasé. Cependant, rappelez-vous que je ne cherche pas de solution à mon code ... – Peter

0

Essayez de déplacer le script vers le bas de la page.

Je voudrais aussi ranger les éléments suivants:

  • Supprimez le code non HTML dans le corps
  • Ajouter ouverture & fermeture balise html

Cela fonctionne pour moi:

<!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. Merci pour votre réponse. Cependant, je pense que vous avez mal compris ma raison de poster. Je ne cherche pas de solution à mon code HTML. J'ai même écrit le correctif moi-même dans le post original. Je suppose que vous pouvez dire que ma seule question était si cela bloque IE pour d'autres personnes aussi. Je devrais être plus clair à ce sujet. Je me demande si je devrais le signaler quelque part, puisque les accidents sont souvent un point d'entrée pour les cyberattaques. – Peter

+0

Ah, ooops. Bon, je peux confirmer que le code original a crashé mon IE8. Cependant, je ne pense pas que ce soit quelque chose qui puisse être rapporté, car le code lui-même est intentionnellement brisé. –