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?
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?
Respuestas:
Los diferentes navegadores tratan esto de manera diferente. Algunos ejecutan el contenido solo si srcse incluye sin error. Algunos lo ejecutan después de intentar incluir el srcscript, 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 scriptetiqueta en sí y ajusta su comportamiento en función de eso.
srcatributo está presente, y en realidad no es realmente un objeto literal, ese código produciría un SyntaxErrorsi 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.
De acuerdo con la especificación del borrador de HTML5 , los <script>elementos con srcatributos 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.
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:
var scripts = document.getElementsByTagName("script");
var data = eval(scripts[scripts.length - 1].innerHTML);
Cortesía de John Resig .