Quitter type = "text / javascript" language = "javascript"

La plupart des balises de script que je crée, j'inclus toujours type="text/javascript" language="javascript" dans la balise. Mon patron, cependant, ne le fait pas. Parfois, il exclut les deux, parfois juste a la language=javascript même sans les guillemets

Maintenant, nous n'avons eu aucun problème dans aucun des principaux navigateurs avec ses balises. Je parle de toutes les versions d'IE, FF, Safari et Chrome.

Personnellement, je pense que c'est la paresse et une pratique de codage totalement inappropriée et mauvaise pour laisser des choses comme ça, même si cela fonctionne sans elle.

Quelqu'un sait si les deux devraient être inclus ou juste un ou est-il acceptable de laisser les deux dans ASP.NET?

Je suppose que cela devrait être mis à jour maintenant que le paysage a bien changé:

Pour un doctype HTML5, il n'est plus nécessaire . Par exemple: nous la quittons des pages ici à Stack Overflow. Si vous utilisez un doctype HTML5, il est complètement facultatif et par défaut le text/javascript , vous êtes donc absolument absent de le quitter dans tous les navigateurs actuels (ou même très anciens). De façon réaliste, cela était également vrai même dans HTML4 mais pas en HTML strictement valide.

Pour un type de type HTML4 (pour être valide), vous en avez besoin . Pour qu'un navigateur fonctionne réellement, il n'est pas strictement nécessaire et se comportera très bien (cela a été vrai tout le chemin vers Netscape 2) – mais ce ne sera pas un code HTML valide. Si vous avez un doctype HTML4, gardez-le autour et soyez valide – parce que hey, pourquoi pas?


Réponse initiale:

J'utiliserais type="text/javascript" pour être sûr dans tous les navigateurs actuels, pourquoi laisser l'ambiguïté là pour économiser 21 caractères? language="" mais est obsolète, je l'exclure .

En outre, tout validateur va lancer une erreur, bien que cela fonctionne probablement dans le navigateur (à moins que vous ne traitiez quelque chose de très ancien).

Selon la spécification w3c , un type est requis. Donc … même si la plupart des navigateurs vont être assez robustes pour fonctionner sans que le type soit correctement spécifié, il est recommandé de le définir explicitement au text/javascript .

La recommandation du W3C pour HTML5 indique que vous n'avez pas besoin d'inclure

type="text/javascript"

Le navigateur suppose qu'il s'agit de texte / javascript, sauf indication contraire d'un type différent.

http://dev.w3.org/html5/spec/Overview.html#the-script-block-s-type

Douglas Crockford , l'une des grandes autorités et enseignants de Javascript, a ceci à dire :

language="javascript"

Cet attribut a été obsolète. Il a été utilisé pour sélectionner d'autres langages de programmation et des versions spécifiques de JavaScript. Vous n'en avez pas besoin. Ne l'utilisez pas.

type="text/javascript"

Cet attribut est facultatif. Depuis Netscape 2, le langage de programmation par défaut dans tous les navigateurs a été JavaScript. Dans XHTML, cet attribut est nécessaire et inutile. En HTML, il est préférable de le laisser tomber. Le navigateur sait ce qu'il faut faire.

Votre patron peut faire cela pour les raisons «correctes» ou «fausses» (c.-à-d. Il peut suivre les conseils de Crockford ou peut-être être paresseux), mais je ne pense pas que vous pouvez nécessairement juger. Si le reste de son HTML et JS est négligé, c'est une autre chose. J'avouerais que le contenu de la balise de script pourrait être plus une chose religieuse comme la taille de l'onglet ou le placement en entretoise.

Edit: @coffeeaddict a souligné que ne pas mettre les attributs appropriés dans le tag messes jusqu'à ses compilations. Je dirais que toute considération de savoir si les attributs sont strictement corrects ou nécessaires, car les projets doivent toujours être construits de manière propre sans erreurs ni avertissements. Même pour les validateurs, etc., s'ils font partie de la norme du projet.

Si le document est analysé en tant que HTML5, la langue sera par défaut pour JavaScript, et aucun attribut de toute sorte n'est nécessaire (pour référence future, il n'y a pas d'attribut de langue dans HTML5).

Si vous utilisez SSL 4.x ou XHTML 1.x, la langue de script par défaut est supposée déterminée à partir de la valeur de l'en-tête Content-Script-Type, qu'il soit présent localement dans une META / meta tag (haute priorité) ou comme Un en-tête HTTP (priorité faible). L'attribut type est encore requis par HTML 4.x même si l'en-tête Content-Script-Type est présent (localement ou autrement) puisque la langue de script par défaut n'affecte que la manière dont les valeurs des attributs comme onload, onclick, etc. sont traitées. L'attribut type avec "texte / javascript" car la valeur doit être utilisée dans le cas de JavaScript au lieu de l'attribut de langue, sauf si vous utilisez des navigateurs anciens (p. Ex. IE4, NN4, peut-être IE5 / Mac? Rappelez-vous qu'il y avait Une version d'IE6 pour Windows 98, de sorte que l'attribut de langue est définitivement dépassé).

Un dernier bit d'information: techniquement parlant, application / x-javascript est la valeur correcte pour JavaScript (à moins qu'il ne devienne application / javascript sans moi, mais malheureusement, le texte / javascript est celui qui a le plus grand support en termes de navigateur croisé compatibilité.

ASP.NET n'a rien à voir avec quoi que ce soit. Xhtml 1.0 dicte que vous utilisez type = "text / javascript", avec des guillemets, ou bien vous ne produisez pas xhmtl valide.

Exécutez le validateur w3c sur vos pages et respectez ce qu'il demande.