Maison > interface Web > js tutoriel > le corps du texte

Une brève analyse de l'utilisation de document.write() dans JS et des raisons de l'effacement

小云云
Libérer: 2017-12-06 11:26:29
original
2861 Les gens l'ont consulté

Parfois, nous rencontrons une telle situation, c'est-à-dire que lors de l'utilisation de la fonction document.write() pour écrire du contenu sur une page Web, le contenu original du document sera effacé. Ceci est considéré comme un problème pour les débutants. ce qui suit présentera pourquoi cette situation se produit, et bien sûr, nous saurons également comment éviter que cette situation ne se produise.

Regardons d'abord un exemple de code :


<!DOCTYPE html>   
<html>   
  <head>   
  <meta charset=" utf-8">      
  <title>Document</title>   
  <script type="text/javascript"> 
    window.onload=function(){
      document.write("重温 JavaScript");
    }
  </script> 
</head> 
<body> 
  <p>Hello JavaScript</p> 
</body> 
</html>
Copier après la connexion


À partir du code ci-dessus, nous peut voir que le document La fonction .write() efface le contenu original du document. Voici la raison de cette situation :

L'événement window.onload exécute la fonction de traitement des événements une fois le contenu du document complètement chargé. Bien sûr, le flux de documents Il a été fermé. À ce stade, l'exécution de la fonction document.writ() appellera automatiquement la fonction document.open() pour créer un nouveau flux de documents, écrire un nouveau contenu, puis l'afficher via le navigateur, écrasant ainsi le contenu original. Cependant, de nombreux amis se demandent encore pourquoi, dans la situation suivante, le contenu de la page Web d'origine ne sera pas écrasé. Le code est le suivant :


<!DOCTYPE html>   
<html>   
  <head>   
  <meta charset=" utf-8">     
  <title>Document</title>   
  <script type="text/javascript"> 
    document.write("重温 JavaScript");
  </script> 
</head> 
<body> 
  <p>Hello JavaScript</p> 
</body> 
</html>
Copier après la connexion

.

Dans le code ci-dessus, le contenu original du document n'a pas été effacé, car le flux de document actuel est créé par le navigateur et la fonction document.wirte() s'y trouve. où cette fonction est exécutée. À ce moment, le flux de documents n'a pas été fermé. La fonction document.open() ne sera pas appelée pour créer un nouveau flux de documents, elle ne sera donc pas écrasée. Certains amis peuvent demander pourquoi la méthode suivante ne fonctionne toujours pas. Le code est le suivant :


<!DOCTYPE html>   
<html>   
<head>   
  <meta charset=" utf-8">     
  <title>Document</title>   
  <script type="text/javascript">
    document.close(); 
    document.write("重温 JavaScript");
  </script> 
</head> 
<body> 
  <p>Hello JavaScript</p> 
</body> 
</html>
Copier après la connexion


Utilisez document.close. () ci-dessus Pourquoi ne puis-je pas écraser le contenu original après la fermeture du flux de documents ? Malheureusement, le flux de documents est créé par le navigateur et ne peut pas être fermé manuellement sans autorisation. La fonction document.close() ne peut fermer que les documents créés par le navigateur. fonction document.open(). Regardez l'exemple de code suivant :


<!DOCTYPE html>    
<html>    
<head>    
  <meta charset=" utf-8">      
  <title>Document</title>   
  <script type="text/javascript">  
  function create(){ 
    var newWindow=window.open("","Document","_blank"); 
    newWindow.document.write("Hello JavaScript"); 
    newWindow.document.close(); 
    newWindow.document.write("覆盖后的输出"); 
  } 
  window.onload=function(){ 
    var obt=document.getElementById("bt"); 
    obt.onclick=function(){ 
      create(); 
    } 
  } 
</script> 
</head>  
<body>  
  <p id="print">Hello JavaScript</p> 
  <input type="button" id="bt" value="查看效果"/> 
</body>  
</html>
Copier après la connexion


Le flux de documents créé par document.open() peut être créé par document. close() est désactivé, alors le contenu sorti par le deuxième document.write() écrasera le contenu sorti par le premier.

Lors du référencement de JavaScript externe de manière asynchrone, vous devez d'abord exécuter document.open() pour effacer le document, puis exécuter document.write(). Les paramètres sont écrits au début du contenu du corps.

Si vous exécutez document.write() directement sans exécuter document.open() au préalable, il ne sera pas valide et Chrome affichera l'invite suivante :

Une brève analyse de lutilisation de document.write() dans JS et des raisons de leffacement


// asyncWrite.js
document.open();
document.write(&#39;<p>test</p>&#39;);
document.close();
<!-- asyncWrite.html -->
<!-- 运行前 -->
<body>
  <script src="asyncWrite.js" async></script>
</body>
<!-- 运行后 -->
<body>
  <p>test</p>
</body>
Copier après la connexion


Document.write() peut également écrire des chaînes contenant des balises de script, mais elles doivent être échappées. Le contenu écrit dans la balise de script s'exécutera normalement.


<!-- 运行前 -->
<script>
  document.write(&#39;<script>document.write("<p>test</p>");<\/script>&#39;);
</script>
<!-- 运行后 -->
<script>
  document.write(&#39;<script>document.write("<p>test</p>");<\/script>&#39;);
</script>
<script>document.write("<p>test</p>");</script>
<p>test</p>
Copier après la connexion


document.write() peut transmettre plusieurs paramètres.


<!-- 运行前 -->
<body>
  <script>
    document.write(&#39;<h2>multiArgument</h2>&#39;,&#39;<p>test</p>&#39;);
  </script>
</body>
<!-- 运行后 -->
<body>
  <script>
    document.write(&#39;<h2>multiArgument</h2>&#39;,&#39;<p>test</p>&#39;);
  </script>
  <h2>multiArgument</h2>
  <p>test</p>
</body>
Copier après la connexion

Le contenu ci-dessus est une brève analyse de l'utilisation de document.write() dans JS et des raisons de sa suppression. J'espère que cela pourra aider tout le monde.

Recommandé en premier :

Introduction à l'utilisation des compétences js document.write()_javascript

document.write() et ses sortie Style de contenu et compétences de contrôle de position_javascript

Générateur de code document.write()_compétences javascript

document.open() et document .write( )_Connaissances de base

Explication approfondie de document.write() et des balises non appariées de HTML4.01_Connaissances de base

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!