2012-08-30 3 views
17

Ich habe unsere Website in IE8 getestet und bekam die gefürchtete Unexpected call to method or property access. Fehler.Erstellen Sie ein Skript-Tag in IE8

Nach vielen Debugging (IE8 Devtools saugen), fand ich die beleidigende Zeile.

$('<script>').html(JSData).appendTo('head') 

Das Problem ist $('<script>').html(JSData). Ich habe versucht, genau das in der Konsole auszuführen, und ich habe immer noch den Fehler.

Warum kann IE8 .html nicht auf einem neu erstellten Skript-Tag setzen?

P.S. Dies scheitert auch:

$(document.createElement('script')).html(JSData) 

UPDATE: Ich habe versucht das Script-Tag ohne jQuery zu erstellen:

var scriptTag = document.createElement('script'); 
scriptTag.type = 'text/javascript'; 
scriptTag.innerHTML = JSData; 

Auf der scriptTag.innerHTML = JSData; Linie, IE8 gibt Unknown runtime error. Danke IE8.

+4

Haben Sie versucht, 'text' anstelle von' html' zu verwenden? – Shmiddty

+0

Sieht so aus, als wäre es einfacher/besser, das Skript trotzdem 'eval()' zu benutzen. – Pointy

+0

@ Pointy: Ich könnte 'eval' (oder besser gesagt, jQuery' $ .globalEval') verwenden, aber ich dachte, das könnte "schneller" sein. –

Antwort

15

Ihre Nur-JavaScript-Methode muss das Skriptelement zum Dokument hinzufügen.

IE < 9 erkennt innerHTML oder childNodes für Skript-Tags nicht, alle Browser unterstützen jedoch die text -Eigenschaft.

var scriptTag = document.createElement('script'); 
scriptTag.text= JSData; 
document.body.appendChild(scriptTag); 
+0

Hmm, das scheint zu funktionieren. Neugierig, dass '$ ('