type tipos plain content application javascript html css mime-types

javascript - tipos - mime type pdf



¿Por qué escribir<script type="text/javascript"> cuando el tipo de mime es configurado por el servidor? (4)

Según entiendo, el servidor web establece los tipos de mimo. ¿Por qué agregamos el atributo type="text/javascript or type="text/css" ? ¿No es esto un atributo inútil e ignorado?


Boris Zbarsky (Mozilla), quien probablemente sepa más acerca de las entrañas de Gecko que cualquier otra persona, proporcionó en http://lists.w3.org/Archives/Public/public-html/2009Apr/0195.html el pseudocódigo que se repite a continuación para describir qué hacen los navegadores basados ​​en Gecko:

if (@type not set or empty) { if (@language not set or empty) { // Treat as default script language; what this is depends on the // content-script-type HTTP header or equivalent META tag } else { if (@language is one of "javascript", "livescript", "mocha", "javascript1.0", "javascript1.1", "javascript1.2", "javascript1.3", "javascript1.4", "javascript1.5", "javascript1.6", "javascript1.7", "javascript1.8") { // Treat as javascript } else { // Treat as unknown script language; do not execute } } } else { if (@type is one of "text/javascript", "text/ecmascript", "application/javascript", "application/ecmascript", "application/x-javascript") { // Treat as javascript } else { // Treat as specified (e.g. if pyxpcom is installed and // python script is allowed in this context and the type // is one that the python runtime claims to handle, use that). // If we don''t have a runtime for this type, do not execute. } }


Permite a los navegadores determinar si pueden manejar el lenguaje de scripting / estilo antes de realizar una solicitud para el script o la hoja de estilo (o, en el caso del script / estilo incorporado, identificar qué idioma se está utilizando).

Esto sería mucho más importante si hubiera habido una mayor competencia entre los idiomas en el espacio del navegador, pero VBScript nunca llegó más allá de IE y PerlScript nunca pasó de ser un complemento específico de IE, mientras que JSSS era bastante basura para empezar.

El borrador de HTML5 hace que el atributo sea opcional.


Porque, al menos en HTML 4.01 y XHTML 1 (.1), se w3.org/TR/html401/interact/scripts.html#adef-type-SCRIPT el atributo de type para los elementos <script> .

En HTML 5 , el type ya no es obligatorio.

De hecho, si bien debe usar text/javascript en su fuente HTML, muchos servidores enviarán el archivo con Content-type: application/javascript . Lea más acerca de estos tipos MIME en ietf.org/rfc/rfc4329.txt .

Observe la diferencia entre RFC 4329, que marcó text/javascript como obsoleto y recomienda el uso de application/javascript , y la realidad en la que algunos navegadores se vuelven locos en elementos <script> que contienen type="application/javascript" (en fuente HTML, no el encabezado HTTP Content-type del archivo que se envía). Recientemente, hubo una discusión en la lista de correo WHATWG acerca de esta discrepancia (el type HTML 5 es el predeterminado para text/javascript ), lea estos mensajes con el tema ¿Considerará acerca de RFC 4329?


Douglas Crockford dice :

type="text/javascript"

Este atributo es opcional. Desde Netscape 2, el lenguaje de programación predeterminado en todos los navegadores ha sido JavaScript. En XHTML, este atributo es necesario e innecesario. En HTML, es mejor dejarlo fuera. El navegador sabe qué hacer.

Él también dice:

W3C no adoptó el atributo de language , prefiriendo en su lugar un atributo de type que toma un tipo MIME. Lamentablemente, el tipo MIME no estaba estandarizado, por lo que a veces es "text/javascript" o "application/ecmascript" u otra cosa. Afortunadamente, todos los navegadores siempre elegirán JavaScript como el lenguaje de programación predeterminado, por lo que siempre es mejor simplemente escribir <script> . Es el más pequeño y funciona en la mayoría de los navegadores.

Solo para fines de entretenimiento, probé los siguientes cinco guiones

<script type="application/ecmascript">alert("1");</script> <script type="text/javascript">alert("2");</script> <script type="baloney">alert("3");</script> <script type="">alert("4");</script> <script >alert("5");</script>

En Chrome, todo menos el script 3 ( type="baloney" ) funcionó. IE8 no ejecutó el script 1 ( type="application/ecmascript" ) o el script 3. Basado en mi muestra no extensa de dos navegadores, parece que puede ignorar el atributo type , pero que lo use mejor. un valor legal (dependiente del navegador).