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;
Einfach einen Kommentar — durch änderung Ihrer Beispiel etwas, ich habe es geschafft, ein anderes Verhalten in Opera, Firefox, Safari, und Safari beim Durchlaufen des Codes.
ü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

Schreibe einen Kommentar