JavaScript Utiliser des commentaires HTML en JavaScript (mauvaise pratique)


Exemple

Les commentaires HTML (éventuellement précédés d'espaces) provoqueront également le code (sur la même ligne) ignoré par le navigateur, bien que cela soit considéré comme une mauvaise pratique .

Commentaires d'une ligne avec la séquence d'ouverture de commentaire HTML ( <!-- ):

Remarque: l'interpréteur JavaScript ignore les caractères de fermeture des commentaires HTML ( --> ) ici.

<!-- A single-line comment.
<!-- --> Identical to using `//` since
<!-- --> the closing `-->` is ignored.

Cette technique peut être observée dans le code hérité pour masquer le JavaScript des navigateurs qui ne le supportaient pas:

<script type="text/javascript" language="JavaScript">
<!--
/* Arbitrary JavaScript code.
   Old browsers would treat
   it as HTML code. */
// -->
</script>

Un commentaire de fermeture HTML peut également être utilisé en JavaScript (indépendamment d'un commentaire d'ouverture) au début d'une ligne (éventuellement précédée d'un espace), auquel cas le reste de la ligne est également ignoré:

--> Unreachable JS code

Ces faits ont également été exploités pour permettre à une page de s’appeler d’abord en HTML et ensuite en JavaScript. Par exemple:

<!--
self.postMessage('reached JS "file"');
/*
-->
<!DOCTYPE html>
<script>
var w1 = new Worker('#1');
w1.onmessage = function (e) {
    console.log(e.data); // 'reached JS "file"
};
</script>
<!--
*/
-->

Lorsque vous exécutez un code HTML, tout le texte multiligne entre les commentaires <!-- et --> est ignoré. Par conséquent, le code JavaScript qui y est contenu est ignoré lorsqu'il est exécuté en HTML.

En tant que JavaScript, cependant, alors que les lignes commençant par <!-- et --> sont ignorées, leur effet est de ne pas s'échapper sur plusieurs lignes, donc les lignes qui les suivent (par exemple, self.postMessage(... ) ne seront pas ignoré lorsqu'il est exécuté en JavaScript, au moins jusqu'à ce qu'ils atteignent un commentaire JavaScript , marqué par /* et */ . Ces commentaires JavaScript sont utilisés dans l'exemple ci-dessus pour ignorer le texte HTML restant (jusqu'à ce que --> qui soit également ignoré comme JavaScript) ).