Pourquoi un auto-référencement iframe pas infiniment boucle et de planter ma machine?
J'ai créé une page HTML simple avec un iframe
dont src
attribut fait référence à la page qui les contient, en d'autres termes, un auto-référencement iframe.
this.html
<html>
<head></head>
<body>
<iframe src="this.html"></iframe>
</body>
</html>
Pourquoi n'est-ce pas infiniment boucle et de planter mon navigateur? Aussi, pourquoi n'a même pas IE crash-t-il?
(Note: Ceci a engendré une équipe de la discussion sur les avantages et les inconvénients de l'utilisation des iframes pour résoudre des problèmes. Vous savez, le " miroir un miroir de tri.)
- De la nourriture pour la pensée, c'était en fait adressée à un certain point (1999?) mais je me demande quelle justification? bugzilla.mozilla.org/show_bug.cgi?id=8065
- C'est déjà discuté ici: stackoverflow.com/questions/5763508/iframe-to-infinity En bref, les navigateurs place des limites sur iframe de nidification.
- Votre code a été en mesure de briser une chose après tout. Mon devtools: dl.dropbox.com/u/8989748/devtools_broken.png . J'espère que vous êtes heureux maintenant 🙁
- 1000 points pour "pourquoi n'a même pas IE crash-t-il?"
Vous devez vous connecter pour publier un commentaire.
W3C a pris soin de, en 1997, en expliquant comment les cadres devraient être mises en œuvre "La mise en œuvre des Cadres HTML":
Iframe récursivité bug/attaque de l'histoire
Comme kingdago découvert et qui est mentionné dans le commentaire ci-dessus, un navigateur qui a manqué pour mettre en œuvre une clause de sauvegarde pour cet été Mozilla dans 1999. Citation de l'un des développeurs:
J'ai décidé de creuser un peu plus dans cette et il s'avère que dans 2004 ce qui s'est passé de nouveau. Cependant, cette fois JavaScript a participé:
Puis de nouveau dans 2008 avec Firefox 2 (ceci implique également le JavaScript).
Et de nouveau dans 2009. La partie intéressante est que ce bug est encore ouvert et cet attachement:
https://bugzilla.mozilla.org/attachment.cgi?id=414035
(allez-vous retenir votre curiosité?) va encore crash/freeze votre Firefox (je l'ai juste testé et je suis presque tombé de l'ensemble de Ubuntu). Dans google Chrome, il vient de charge indéfiniment (probablement parce que chaque onglet vit dans un processus séparé).Comme pour les autres navigateurs:
frame.src = 'http://0.0.0.0:9922/index.html?' + new Date().getTime()
Je voudrais ajouter un petit quelque chose à la "Aussi, pourquoi n'a même pas IE crash-t-il?" partie de la question. IE ne nous laissez pas vers le bas...
Si vous ajoutez une simple itération numéro de chaîne de requête imbriquée de l'iFrame src Firefox et d'autres vont juste s'arrêter après un certain itération de la profondeur. IE - et nous l'avons testé avec la version de IE 10 - tout se bloque 🙂
this.php