Ejemplo del botón +1 de Google:
<script type="text/javascript" src="https://apis.google.com/js/plusone.js">
{"parsetags": "explicit"}
</script>
La etiqueta de script tiene un atributo src y un contenido. ¿Qué significa esto y cómo funciona?
javascript
usr
fuente
fuente
Respuestas:
Los diferentes navegadores tratan esto de manera diferente. Algunos ejecutan el contenido solo si
src
se incluye sin error. Algunos lo ejecutan después de intentar incluir elsrc
script, independientemente del éxito. Dado que este comportamiento no es confiable (y está prohibido en HTML5 ), debe evitarse.Google no se basa en ningún comportamiento específico. Dado que el contenido es solo un objeto literal (un valor), ejecutarlo no haría nada más que provocar un error silencioso. El código de Google analiza el contenido de la
script
etiqueta en sí y ajusta su comportamiento en función de eso.fuente
src
atributo está presente, y en realidad no es realmente un objeto literal, ese código produciría unSyntaxError
si se ejecuta, es simplemente "texto JSON" que utilizará el script por sí mismo más tarde.s=document.getElementsByTagName('script'); text = s[s.length-1].innerHTML;
no creo que haya ninguna forma de recuperar el contenido de un nodo de script que no implique tocar el DOM .Si un elemento de secuencia de comandos tiene un atributo src , el contenido debe ignorarse, cualquier otro comportamiento no es conforme.
Se ha sugerido en blogs (como un truco) poner contenido en el elemento sabiendo que no será evaluado, luego usar métodos DOM para obtener el contenido como una cadena y evaluarlo o insertarlo en un nuevo elemento de script. Ninguno de estos es una buena idea.
fuente
De acuerdo con la especificación del borrador de HTML5 , los
<script>
elementos consrc
atributos solo deben tener código comentado, que está destinado a proporcionar documentación para el script. Sin embargo, no parece que Google se ajuste a esta especificación.fuente
Una vez que se ha cargado el script, busca dentro de su propia etiqueta de script para acceder a su contenido.
Utilizará un código similar a este:
Cortesía de John Resig .
fuente