document.write () écrase le document?
Ce:
function myFunction()
{
document.write("sup");
}
appelé dans le code html comme:
<div id="myDiv">
<script>myFunction();</script>
</div>t
ajoute une corde sup
à la myDiv
élément div. Qui est ce que je veux, exactement. Cependant, ce:
function loadFile(uri)
{
var r = new XMLHttpRequest();
document.write("trying to open: " + uri);
r.open('GET', uri, true);
r.send(null);
r.onreadystatechange = function()
{
if (r.readyState == 4)
{
myFunction();
}
}
}
function myFunction()
{
document.write("sup");
}
appelé comme ceci:
<div id="myDiv">
<script>loadFile("filename.txt");</script>
</div>
semble écraser de tout mon fichier html. I. e. quand je le lance dans Firefox, il me montre que la chaîne sup
(c'est l'ensemble du contenu de la page), mais la page semble être toujours en cours de chargement (l'icône de chargement de FF est toujours là animation, apparemment à l'infini).
Tout d'abord, cela va être utilisée que localement, hors ligne, rapidement et de façon pratique de présentation des données (à l'aide de html+js et navigateur web au lieu de plaing fichier texte). Ce que je veux, c'est de charger un fichier texte local et ensuite, mettre un peu de son contenu comme une partie de la page html. Le même que dans mon premier exemple, mais avec le chargement du fichier texte premier.
source d'informationauteur NPS
Vous devez vous connecter pour publier un commentaire.
Le problème est que lorsque vous exécutez le document.écrire après le document est chargé, il remplace le document en entier. S'il est exécuté avant qu'il n'écrase pas.
Ce que vous voulez faire est de définir la innerHtml d'un élément spécifique, quelque chose comme:
Permet de passer en revue ce qu'un navigateur n'lorsqu'il reçoit un fichier html.
Maintenant, les navigateurs modernes également exposer une API de document qui vous permettent de faire exactement ces tâches à l'aide de javascript.
Vous pouvez ouvrir un document pour l'écriture à l'aide de
document.open()
. Vous pouvez également commencer à rédiger le contenu du document à l'aide dedocument.write()
. Enfin, vous pouvez fermer le document pour l'écriture à l'aide dedocument.close()
. Depuis le document doit toujours être ouvert en écriture avant vous écrire, appelantdocument.write()
toujours un implicitedocument.open()
.Intercalant
document.write()
appels à travers un corps html est une technique couramment utilisée utilisée pour insérer une chaîne de contenu de façon dynamique dans une page html.Par exemple, si vous exécutez
document.write("<p>holla</p>")
dans le corps d'un fichier html, le navigateur va faire ce qui suit lors de la réception du fichier html.document.write()
quand il la rencontre, puis d'écrire"<p>holla</p>"
dans cette ligne spécifique dans le document, comme si la chaîne était déjà partie du fichier html! Depuisdocument.write()
est appelé pendant l'analyse d'un fichier html, il est juste analysée comme une partie de la page.Si c'est la façon dont vous utilisez
document.write()
il n'y aurait pas eu de surprise. Au lieu de cela, vous appelerdocument.write()
après le html est analysée.Alors, que pensez-vous devrait se produire?
Comme je l'ai mentionné avant, un document doit être ouvert pour l'écriture avant il est écrit à. En théorie, nous pourrions ajouter au contenu existant ou tout simplement le remplacer. Eh bien, si on ajoute le contenu, nous finirons avec un invalide page html parce que les nouvelles valeurs apparaissent après les balises de fermeture. De sorte que le plus raisonnable comportement est d'écraser le contenu et c'est exactement ce qui se passe.