Je voulais juste savoir pourquoi cela se produit.
Eh bien, le navigateur ne sait pas encore si votre & myhtml est une référence de l'entité que vous ne l'avez pas fini d'écrire encore, ou tout simplement le code cassé, il devra réparer.Par exemple, vous pouvez dire: (. Bien sûr, il n'y a pas de référence d'entité comme & myhtmlpotato, que vous pourriez faire allusion, mais l'analyseur ne sait pas encore)
document.write('&eac');
document.write('ute;');
Si vous laissez la analyseur sait qu'il n'y a plus de bits de référence d'entité à venir, en écrivant quelque chose qui ne pourrait pas être dans une référence d'entité, comme une balise <>, ou des espaces, il abandonnera et décidera que votre code est simplement cassé, et réparez-le.
Normalement, la fin de la page serait un endroit où cela se produirait, mais vous n'avez pas de fin de page, car le script ne fait pas ce que vous pensez qu'il fait. Au lieu d'appeler document.write() au cours du processus de chargement de la page d'origine quand il peut écrire du contenu sur votre page actuelle, vous l'appelez dans le chargement, à ce moment le document est complètement chargé et vous pouvez ' t ajouter à cela. Dans cet état, l'appel de document.write() appelle implicitement document.open(), détruisant la page en cours et en démarrant une nouvelle, à laquelle vous écrivez ensuite «my & myhtml». Cette nouvelle page que vous avez ouverte reste ouverte et n'est pas complètement chargée jusqu'à ce que vous appeliez document.close() pour lui dire que vous n'écrivez plus dessus. À ce stade, votre référence d'entité partielle sera résolue en tant que balisage incorrect et réparée.
Vous ne devez pas utiliser document.write après l'événement body onload sauf si vous voulez vraiment remplacer tout le contenu de la page. – epascarello