Dándole un ID a la etiqueta de script


Me encontré con un escenario en el que dar a un elemento script un atributo id resolvería un problema fácilmente. Sin embargo, después de leer sobre el elemento script en w3schools y quirksmode, parece que hacerlo podría tener algunas consecuencias imprevistas.

¿Alguien se ha encontrado con alguno de estos problemas con navegadores como Chrome, Safari, FF3 up e IE 7 up?

Author: alex, 2010-04-30

5 answers

Está bien en todos los navegadores actuales.

El único navegador que se equivocó <script id> fue Netscape 4, del que dejamos de preocuparnos hace mucho, mucho tiempo.

Esa página de quirksmode parece estar muy desactualizada, con su uso de atributos language, script <!-- oculto, y application/x-javascript. Su consejo sobre evitar <script> en el <body> (y ponerlo en <head> en su lugar) está en desacuerdo con las prácticas alentadas de hoy.

Si estamos hablando <script> problemas de compatibilidad de atributos: defer no funciona en todas partes, así que no confíe en él; charset no funciona en todas partes, y tampoco lo hace el parámetro charset en el Tipo de contenido del script servido, por lo que es mejor que su conjunto de caracteres de script coincida con la página; type siempre debe ser text/javascript y no una de las alternativas no funcionales que los pedantes que escribieron el RFC 4329 quisieran que usara.

 80
Author: bobince,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-30 00:03:31

Si todavía tienes que apoyar Netscape 4, tienes muchos problemas, y la lástima y las condolencias del resto del mundo de los desarrolladores.

Respuesta corta, no me preocuparía por eso.

 6
Author: Robusto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-29 23:52:14

Tenga en cuenta que establecer el id en cualquier elemento introduce una nueva variable global con el mismo nombre que el atributo id:

id como variable global

 5
Author: niutech,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-07 22:29:01

No creo que un navegador tenga un problema al agregar un atributo id a un elemento script.

En algunos de mis sitios, que cargan JavaScripts adicionales a través de JavaScript, he agregado un atributo class para hacer referencia a ellos más fácil. El validador no se quejó.

 2
Author: alex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-29 23:51:40

Sé que ha pasado mucho tiempo, pero pensé que sería bueno señalar que cuando miras la definición de W3 Schools de la etiqueta de script , ves en algún momento que

La etiqueta también soporta los Atributos globales en HTML.

Y entre esos atributos, ta-da, encontrarás tu adorable id.

Lo mismo ocurre con un montón de etiquetas, que sin duda nos dará mucha flexibilidad a la hora de sacar esos buenos trucos del sombrero.

 2
Author: JBourne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-09 09:43:31