2008-10-15 4 views
65

Dans le passé, les gens utilisaient des balises de commentaires HTML autour de blocs de JavaScript pour empêcher les navigateurs "plus anciens" d'afficher le script. Même Lynx est assez intelligent pour ignorer JavaScript, alors pourquoi certaines personnes continuent à faire cela? Y a-t-il des raisons valables ces jours-ci?Est-il toujours logique d'utiliser des commentaires HTML sur des blocs de JavaScript?

<script type="text/javascript"> 
<!-- 
//some js code 
//--> 
</script> 

Modifier: Il y a une situation que j'ai rencontrée. Certains éditeurs de code, tels que Dreamweaver, se confondent avec du code HTML entre guillemets dans une chaîne JavaScript lorsqu'ils sont en "mode création" et tentent de l'afficher dans le cadre de votre page.

+4

Je suppose que cela a un peu à voir avec l'expérience Ken Keyes, Jr. «singes/banane/échelle/jet d'eau» Les gens continuent à le faire parce qu'ils voient juste que c'est fait de cette façon, mais ne demandent jamais pourquoi: –

+0

'->' devrait être '// ->'. –

Répondre

71

Non, absolument pas. Tout agent d'utilisateur, moteur de recherche, ou absolument rien d'autre de nos jours est assez intelligent pour ignorer Javascript s'il ne peut pas l'exécuter.

Il n'y avait qu'une très brève période lorsque cela était utile du tout, et il était autour de 1996.

+6

LOL - Coupable! Mais ensuite, j'ai appris à le faire en 1996 et personne n'a jamais dit différent ... –

+0

Je pense avoir lu que c'est déprécié mais je ne trouve pas le lien. – some

19

Il n'y a pas une bonne raison de faire plus, comme les navigateurs qui ont requis ce en gros disparu du web.

En fait, en faisant cela peut effectivement causer des problèmes inattendus avec les tentatives de certains anciens navigateurs d'interpréter la page si elle utilise XHTML - de developer.mozilla.org:

  • Mozilla 1.1 +/Opera 7

    Ne pas appliquer CSS ou exécuter le JavaScript.

  • Netscape/Mozilla 1.0.x 7.0x

    Ne pas appliquer CSS mais n'exécute le code JavaScript.

  • Internet Explorer 5.5+

    Impossible d'afficher le document.

Ce site propose des liens aussi à des exemples de severalproblems mentionné ci-dessus.

14

Vous devez utiliser CDATA si ...

<script type="text/javascript" charset="utf-8"> 
/* <![CDATA[ */ 

/* ]]> */ 
</script> 

Parce que si vous avez '<', '>', '&', etc dans votre code, le code ne validera pas :)

+11

SI vous voulez être compatible XHTML, sinon vous n'en avez pas besoin. –

+4

Si vous voulez vraiment utiliser Javascript dans des documents XML bien formés, placez-le dans un fichier .js externe. Par exemple, les applications Mozilla XUL l'exigent. – MarkR

+0

heh, la réponse était pour dans les scripts de document. Bien sûr, je recommande de mettre tous les fichiers css et jss dans des fichiers externes :) –

1

ne pas avoir à utiliser des blocs CDATA est l'une des raisons pour lesquelles je préfère utiliser le HTML 4.01 strict comme mon docttype, mais, Staicu, je pensais qu'il utilise la syntaxe suivante:

<script charset="utf-8"> 
//<![CDATA[ 

//]]> 
</script> 

Peut-être t Les deux sont-ils équivalents? Quelqu'un sait-il s'il y a un avantage pour l'un par rapport à l'autre?

+0

// est un commentaire de ligne,/* */est un commentaire de bloc. Vous pouvez utiliser l'un ou l'autre, pour le javascript c'est pareil (il est commenté). Mais vous avez oublié de définir le type = "text/javascript" – some

+1

type = "text/javascript" est ignoré par les navigateurs en faveur du type MIME envoyé par le serveur. C'est une omission intentionnelle. –

+1

Andrew: Je ne comprends pas. Ceci est un script incorporé dans le document HTML, alors d'où vient le 'texte/javascript'? En outre, je ne pense pas que vous devriez utiliser l'attribut 'charset' s'il n'y a pas d'attribut' src', puisque l'attribut 'charset' spécifie le jeu de caractères du fichier lié à l'utilisation de l'attribut' src'. –

11

Enfer non, personne n'a plus besoin de ça et si vous le faites, vous avez d'autres problèmes à régler. Lorsque vous voulez vraiment prendre en charge les navigateurs qui en ont besoin, vous devez faire attention à beaucoup plus de choses. Pas même parler du manque de css!

Cependant, le plus gros problème est que les gens ne le font pas correctement.En fait, votre exemple est faux, parce que la ligne

--> 

devrait lire

//--> 

d'autre part, vous tapez attribut dit "text/javascript" ce qui est faux aussi. Il a été "text/javascript" (tout en minuscules) mais cela est obsolète (voir le IANA List) et maintenant il devrait être "application/javascript" (voir another IANA List.) Toutefois, Douglas Crockford, le gourou JS, a dit que vous devriez partir it out

une autre personne problème mentionné est déjà présent:.. commentaires HTML, « - » est pas autorisé et cela signifie que vous ne pouvez pas utiliser « X- » pour décrémenter x par un

+0

Il a raison. Il empêche Javascript d'exécuter le -> – jezzipin

Questions connexes