Vraag Wat betekent een script-tag met src AND-inhoud?


Voorbeeld van Googles +1 knop:

<script type="text/javascript" src="https://apis.google.com/js/plusone.js">
      {"parsetags": "explicit"}
</script>

De scripttag heeft een src-kenmerk en inhoud. Wat betekent dit en hoe werkt het?


112
2018-06-29 23:11


oorsprong


antwoorden:


Verschillende browsers behandelen dit anders. Sommigen gebruiken de inhoud alleen als de src is zonder fouten inbegrepen. Sommigen gebruiken het nadat ze hebben geprobeerd het bestand op te nemen src script, ongeacht het succes. Omdat dit gedrag onbetrouwbaar is (en verboden in HTML5), moet worden vermeden.

Google vertrouwt niet op enig specifiek gedrag. Aangezien de inhoud slechts een letterlijk object is (een waarde), zou het uitvoeren ervan in feite niets doen, behalve een stille fout veroorzaken. De code van Google kijkt naar de inhoud van de script tag zichzelf en pas het gedrag daarop aan.


64
2018-06-29 23:15



Als een script element heeft een src attribuut, de inhoud moet genegeerd worden, elk ander gedrag is niet-conform.

In blogs is voorgesteld (als een hack) om inhoud in het element te plaatsen, wetende dat het niet zal worden geëvalueerd, en vervolgens DOM-methoden gebruiken om de inhoud als een tekenreeks te krijgen en eval of invoegen in een nieuw scriptelement. Geen van beide is een goed idee.


20
2018-06-29 23:19



Volgens de HTML5-conceptspecificatie, <script> elementen met src attributen zouden alleen een code met commentaar moeten hebben, die bedoeld is om documentatie voor het script te geven. Het lijkt er echter niet op dat Google aan deze specificatie voldoet.


13
2018-06-29 23:20



Nadat het script is geladen, ziet het binnen zijn eigen scripttag om zijn inhoud te openen.

Het zal een code gebruiken die er ongeveer zo uitziet:

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

Met dank aan John Resig.


13
2018-01-06 17:49