Según tengo entendido, el servidor web establece los tipos de mime. ¿Por qué agregamos el atributo type="text/javascript
o type="text/css"
? ¿No es esto un atributo inútil e ignorado?¿Por qué escribir <script type = "text/javascript"> cuando el tipo de mime está configurado por el servidor?
Respuesta
type="text/javascript"
Este atributo es opcional . Desde Netscape 2, el lenguaje predeterminado de programación en todos los navegadores ha sido JavaScript. En XHTML, este atributo es obligatorio e innecesario. En HTML, es mejor dejarlo fuera. El navegador sabe qué hacer.
W3C no adoptó el atributo
language
, favoreciendo en cambio un atributotype
que tiene un tipo MIME. Por desgracia, el tipo MIME no fue estandarizado, por lo que a veces es"text/javascript"
o"application/ecmascript"
o algo más. Afortunadamente, todos los navegadores seleccionarán JavaScript como el idioma de programación predeterminado, por lo que es siempre es mejor simplemente escribir<script>
. Es el más pequeño, y funciona en el más navegadores.
Para fines de entretenimiento, he probado 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, pero todos Script 3 (type="baloney"
) trabajó. IE8 no ejecutó el script 1 (type="application/ecmascript"
) o el script 3. En base a mi muestra no extensa de dos navegadores, parece que puede ignorar el atributo type
sin problemas, pero que lo use es mejor usar un legal (dependiente del navegador) valor.
Eso no cumple con la especificación HTML: http: //www.w3.org/TR/html401/interact/scripts.html#adef-type-SCRIPT –
Con respecto a la segunda parte: lea más sobre los tipos MIME en RFC 4329: http://www.ietf.org/rfc/ rfc4329.txt De hecho, debería especificar 'type =" text/javascript "', aunque muchos servidores enviarán el archivo con Content-type: 'application/javascript'. –
Realmente me pregunto qué hará IE 6 con estos ejemplos. Y sí, al menos el quinto (con 'type' omitido) funcionará en ese navegador. Esto se debe a que la mayoría de los navegadores tienen configuraciones de respaldo incluidas, en caso de que un documento no cumpla con los estándares; eso no es excusa para servir cosas no estándar o incluso etiquetar sopa. –
Porque, al menos en HTML 4.01 y XHTML 1 (.1), el atributo type
para los elementos <script>
es required.
En HTML 5, type
ya no es necesario.
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 RFC 4329.
cuenta de la diferencia entre el RFC 4329, que marcó text/javascript
como obsoletas y recomendando el uso de application/javascript
, y la realidad en la que algunos navegadores se asustan en <script>
elementos que contienen type="application/javascript"
(en código HTML, no la cabecera HTTP Content-type de el archivo que se envía). Recientemente, hubo una discusión en la lista de correo WHATWG sobre esta discrepancia (HTML 5 type
por defecto text/javascript
), leer estos mensajes con objeto Will you consider about RFC 4329?
Permite a los navegadores determinar si pueden manejar el lenguaje de scripting/estilo antes de realizar una solicitud del 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 hubiese habido más competencia entre 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.
Boris Zbarsky (Mozilla), que probablemente sabe más acerca de las entrañas de Gecko que cualquier otra persona, siempre que al http://lists.w3.org/Archives/Public/public-html/2009Apr/0195.html el pseudocódigo repite a continuación para describir lo que los navegadores basados en Gecko hacen:
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.
}
}
Solo para su información, tenga en cuenta que el uso del atributo 'language' está en desuso: http://www.w3.org/TR/html401/interact/scripts.html#adef-language –
¿Qué idioma es el código anterior? –
@Christopher: "pseudocódigo" –
- 1. ¿Por qué `type (myField)` devuelve `<type 'instance'>` y no `<type 'Field'>`?
- 2. ics file mime type
- 3. es "<script type = 'text/javascript'>" incorrect?
- 4. el tipo MIME correcto para JSON?
- 5. PHP mime type standardization
- 6. ¿Por qué el tipo (classInstance) devuelve 'instancia'?
- 7. ¿Por qué java choke en cert realizado en cacert.org: "el bit keyCertSign no está configurado"?
- 8. Socket.io no está servido por el servidor Node.js
- 9. ¿Por qué <META HTTP-EQUIV = "Content-Script-Type" ...> no se usa?
- 10. correcta para el tipo mime .mp4
- 11. ¿Qué tipo MIME si JSON está siendo devuelto por una API REST?
- 12. <script type = "text/javascript + protovis"> ¿qué significa + sign?
- 13. ¿Por qué no está sellado el tipo de clase y qué puedo hacer con eso?
- 14. ¿Cómo puedo encontrar un archivo "mime-type (Content-Type?)"?
- 15. ¿Por qué git log no está configurado de forma predeterminada en el registro de git --follow?
- 16. tipo de mime YAML?
- 17. Recurso interpretado como Script pero transferido con texto tipo MIME/plain - para el archivo local
- 18. html script tag no usa tipo javascript <script type = "text/html">?
- 19. ¿Por qué obtengo org.hibernate.HibernateException: No CurrentSessionContext configurado
- 20. El tipo <type> existe en ambas DLL
- 21. ¿Por qué Express-js no establece el encabezado Content-Type?
- 22. El servidor no está respondiendo (o socket del servidor MySQL local no está configurado correctamente) en el servidor WAMP
- 23. Ordenación de un IEnumerable <type> por tres campos
- 24. ¿por qué usamos el tipo @Master?
- 25. ¿Por qué __VIEWSTATE el campo oculto se procesa incluso cuando tengo EnableViewState configurado en falso
- 26. ¿Por qué no puedo escribir Nullable <Nullable <int>>?
- 27. ¿Cómo usar el tipo CSV MIME?
- 28. ¿Por qué Maven está buscando el archivo .pom cuando .jar está presente en el repositorio?
- 29. <script></script> o <script />?
- 30. ¿Por qué obtengo el error "type no tiene typeinfo" con un enumeración tipo
servidores están configurados raramente correctamente. – Gumbo
También porque puede colocar cualquier tipo allí, y si el navegador puede entender ese tipo, ejecutará el script. –
@Gumbo: ¿De verdad? ¿Tiene alguna prueba (es decir, algún texto que contenga estadísticas) para esto? –