Les balises de script sont masquées par défaut à l'aide de display:none;
. Unor 1 explique la spécification du langage sous-jacent. Cependant, ils font toujours partie du DOM et peuvent être stylisés en conséquence.
Cela dit, il est important de garder à l'esprit exactement ce que fait une balise de script. Alors qu'il était autrefois accompagné de types et de langues, cela n'est plus nécessaire. Il est maintenant supposé que JavaScript est là, et par conséquent, les navigateurs interpréteront et exécuteront le script lorsqu'il est rencontré (ou chargé) à partir de ces balises.
Une fois le script exécuté, le contenu de la balise est uniquement du texte (souvent masqué) sur la page. Ce texte peut être révélé, mais il peut également être supprimé car il ne s'agit que de texte.
Au bas de votre page, juste avant la </html>
balise de fermeture , vous pourriez très facilement supprimer ces balises avec leur texte et il n'y aurait aucune modification de la page.
Par exemple:
(function(){
var scripts = document.querySelectorAll("script");
for(var i = 0; i < scripts.length; i++){
scripts[i].parentNode.removeChild(scripts[i]);
}
})()
Cela ne supprimera aucune fonctionnalité, car l'état de la page a déjà été modifié et se reflète dans le contexte d'exécution global actuel. Par exemple, si la page avait chargé une bibliothèque telle que jQuery, la suppression des balises ne signifie pas que jQuery n'est plus exposé car il a déjà été ajouté à l'environnement d'exécution de la page. Cela fait essentiellement que l'outil d'inspection DOM n'affiche pas les éléments de script, mais cela met en évidence que les éléments de script une fois exécutés ne sont en réalité que du texte.
1. unor, jeu 07 juillet 2016, wutzebaer, "Quand les tags doivent-ils être visibles et pourquoi le peuvent-ils?", 1er juillet à 10h53, https://stackoverflow.com/a/38147398/1026459
<style>
avec un contenu modifiable. Belle façon de voir les effets en temps réel.