Esempio dal pulsante +1 di Google:
<script type="text/javascript" src="https://apis.google.com/js/plusone.js">
{"parsetags": "explicit"}
</script>
Il tag dello script ha un attributo e contenuto src . Cosa significa e come funziona?
Esempio dal pulsante +1 di Google:
<script type="text/javascript" src="https://apis.google.com/js/plusone.js">
{"parsetags": "explicit"}
</script>
Il tag dello script ha un attributo e contenuto src . Cosa significa e come funziona?
Risposte:
Browser diversi lo trattano in modo diverso. Alcuni eseguono il contenuto solo se srcè incluso senza errori. Alcuni lo eseguono dopo aver tentato di includere lo srcscript, indipendentemente dal successo. Poiché questo comportamento è inaffidabile (e proibito in HTML5 ), dovrebbe essere evitato.
Google non fa affidamento su un comportamento specifico. Poiché il contenuto è solo un oggetto letterale (un valore), eseguirlo in realtà non farebbe nulla se non causare un errore silenzioso. Il codice di Google esamina il contenuto del scripttag stesso e regola il suo comportamento in base a quello.
srcattributo è presente, e in realtà non è realmente un oggetto letterale, quel codice produrrebbe un SyntaxErrorse eseguito, è semplicemente "testo JSON" che lo script utilizzerà da solo in seguito.
s=document.getElementsByTagName('script'); text = s[s.length-1].innerHTML; non penso che ci sia alcun modo per recuperare il contenuto di un nodo di script che non implichi toccare il DOM .
Se un elemento di script ha un attributo src , il contenuto deve essere ignorato, qualsiasi altro comportamento non è conforme.
Nei blog è stato suggerito (come hack) di inserire il contenuto nell'elemento sapendo che non verrà valutato, quindi utilizzare metodi DOM per ottenere il contenuto come una stringa e valutarlo o inserirlo in un nuovo elemento di script. Nessuna di queste è una buona idea.
Secondo la bozza della specifica HTML5 , gli <script>elementi con srcattributi dovrebbero avere solo codice commentato, che ha lo scopo di fornire documentazione per lo script. Tuttavia, non sembra che Google sia conforme a questa specifica.
Dopo che lo script è stato caricato, guarda all'interno del proprio tag script per accedere al suo contenuto.
Userà un codice simile a questo:
var scripts = document.getElementsByTagName("script");
var data = eval(scripts[scripts.length - 1].innerHTML);
Per gentile concessione di John Resig .