Safari und Chrome nicht beurteilen dynamisch Hinzugefügt <script> Tags an der Seite laden
Schreibe ich kleine JavaScript-code, der geladen werden externe js-Dateien in html-Seite laden.
Getestet habe ich 2 Möglichkeiten.
Fall 1: Dokument Verwendet.schreiben Sie fügen <script> - tag.
Es funktionierte bei allen Browsern (IE, FF, Safari, Chrome, Opera).
Fall 2: Verwendet DOMElement.appendChild hinzufügen <script> tag, um die <haed> - element.
Arbeitete nur für IE, FF und Opera. Hat NICHT funktioniert für Safari und Chrome.
In beiden Fällen, die ich erwartet habe neue <script> - tag eingefügt wird vor dem <head> schließen-tag.
So ist das neue <script> - tag ausgewertet wird, bevor die Verarbeitung <body>, und durch das Zeit-Fenster.onload aufgerufen wird, "Erfolg" - variable sollte wahr sein.
Aber es war nicht für Safari und Chrome.
Kann mir jemand sagen, ob dieses sollte oder sollte nicht funktionieren? Danke.
<html>
<head>
<title>JavaScript loading test</title>
<script type="text/javascript">
var success = false;
window.onload = function()
{
document.getElementById("result").innerHTML = success? "OK": "ERROR!";
}
//TEST CASE 1.
//Works for all browsers.
document.write('<script type="text/javascript" src="foo.js"></' + 'script>');
//TEST CASE 2.
//Only works for Opera, FireFox, Opera.
//var scriptElem = document.createElement("script");
//scriptElem.setAttribute("type", "text/javascript");
//scriptElem.setAttribute("src", "foo.js");
//var headElem = document.getElementsByTagName("head")[0];
//headElem.appendChild(scriptElem);
</script>
<!-- expected new scrip tag being inserted here. -->
</head>
<body>
Testing...<br/>
<span id="result"></span>
</body>
</html>
"foo.js" ist nur eine Zeile code.
success = true;
übrigens
'...</'+'script>
ist noch ungültig. Die einfachste gültige Weise zu schützen, ein Ende-tag-string-literal in einem Skriptblock ist <\/script
.hast du jemals eine Lösung finden ?
InformationsquelleAutor 3rensho | 2010-02-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
Aber legen Sie diese in ein SCRIPT-tag am Anfang des BODY-Tags
InformationsquelleAutor Mic
In der Zeit, wenn Ihr javascript ausgewertet wird, den DOM nicht vollständig aufgebaut, das head-element ist noch nicht fertig. Sie normalerweise nicht zugreifen kann oder das DOM manipulieren (
getElementsByTagName
undappendChild
usw. ), bevor die HTML-Seite vollständig geladen ist.InformationsquelleAutor Leventix