atributos personalizados en una etiqueta de script

¿Puedo usar un atributo personalizado en una etiqueta de script como, por ejemplo:

 //javascript  

¿Y luego usa el javascript contenido para acceder al valor de ‘mycustomattribute’?

¿Puedo usar un atributo personalizado en una etiqueta de script como, por ejemplo:

Sí, usando atributos data-* :

 

¿Y luego usa el javascript contenido para acceder al valor de 'mycustomattribute'?

Si probablemente. Si le da una id etiqueta del script , puede hacerlo de manera confiable:

 var info = document.getElementById("theId").getAttribute("data-info"); 

De lo contrario, debe hacer suposiciones sobre la etiqueta del script. Si siempre está en el marcado de la página (no se agrega más adelante con el código), puede hacer esto:

 var scripts = document.getElementsByTagName("script"); var info = scripts[scripts.length - 1].getAttribute("data-info"); 

Eso es porque si la etiqueta de script está en el marcado, se ejecuta tan pronto como se encuentre (a menos que se use async o defer [y sea compatible con el navegador]), y siempre será la última etiqueta de script en la página (en ese punto hora). Pero, de nuevo, si el código agrega la etiqueta del script más tarde , usando createElement y appendChild o similar, no puede confiar en eso.

Aquí hay un ejemplo completo: Live Copy

 < !DOCTYPE html>    Data on Script Tags        

Deberías poder obtenerlo usando jquery

 $("script").attr("mycustomattribute"); 

O prueba esto usando JavaScript regular

 document.getElementsByTagName("script")[0].getAttribute("mycustomattribute"); 

Podría cocer sentido dar una etiqueta de secuencia de comandos de una identificación para poder hacer esto

 document.getElementById("someId").getAttribute("mycustomattribute"); 

Construí una biblioteca para esta misma instancia y es bastante fácil de usar:

  

y luego puedes obtener esa información:

 /** * This returns the following: * * { * car: 'pagani', * starRepo: 'yes, please :)' * } */ ScriptTagData.getData('your-library'); /** * This returns the juust  

Puede descargarlo a través de Bower, CDN o simplemente tomar el código: https://github.com/FarhadG/script-tag-data

Sí, usted puede hacer esto. Los navegadores deben ignorar los atributos que no reconocen en ninguna etiqueta (para permitir una degradación elegante cuando un documento utiliza funciones nuevas con un navegador antiguo). Sin embargo, sería mejor utilizar una etiqueta de conjunto de datos, ya que están reservados explícitamente para los usuarios, por lo que no entran en conflicto con futuros cambios HTML.

  

A continuación, puede acceder a esto utilizando un acceso de atributo ordinario:

 document.getElementById("myscript").getAttribute("mycustomattribute") 

o con la API del dataset :

 document.getElementById("myscript").dataset.mycustomattribute 

(pero vea la tabla de compatibilidad del navegador en la documentación).