2012-03-25 9 views
2

ich lade externe Skripte auf meiner Seite mit diesem Code:JS Laden Skriptfehler

var script = document.createElement('script'); 
script.type = 'text/javascript'; 
script.src = 'http://example.com/script.js'; 
document.getElementsByTagName("head")[0].appendChild(script); 

Es funktioniert, aber wie zu überprüfen, ob es ein Fehler beim Laden war? Zum Beispiel Zeitüberschreitung oder ein Serverfehler.

+0

Bei befestigen sind Sie offen jQuery zu verwenden, können Sie '.getScript' verwenden, die integrierte hat in der Fehler- und Erfolgsverarbeitung: http://api.jquery.com/jQuery.getScript/ – m90

+0

Vielleicht wird dies für Sie hilfreich sein http://stackoverflow.com/questions/3248384/document-createelementscript-synchronous[link] –

Antwort

-1

Wenn Sie das Skript, auf das Sie sich beziehen, besitzen, rufen Sie eine Funktion in der aufrufenden Seite auf, um sie bereit zu sagen. Alternativ könnten Sie nach der Existenz eines Objekts suchen, das in dem Skript deklariert ist, das Sie laden.

3

können Sie einstellen, onload (und möglicherweise onerror - ich habe nur onload selbst) auf dem script Objekt, bevor es an das Dokument angehängt wird. Das Ereignis wird ausgelöst, wenn das Skript erfolgreich geladen wird (oder nicht, für onerror).

+0

onerror funktioniert nicht: 'script.src = 'http: // nothingisher e.pl/script.js '; ' –

8

Sie können den script.onerror verwenden, um etwas zu tun, wenn beim Laden ein Fehler auftritt.

script.onerror = function() { 
    alert("cannot load script"); 
} 

document.getElementsByTagName("head")[0].appendChild(script); 

Stellen Sie sicher, es zu tun, bevor Sie das Skript zu dem Dokument

+0

onerror funktioniert nicht:' script.src =' http: //nothingishere.pl/script.js '; ' –

+0

Sie müssen den onerror-Handler deklarieren, bevor Sie ihn anhängen zu dem Dokument. Meine Antwort wurde aktualisiert, um das gleiche wiederzugeben – Checksum

3

DEMO

//check if script was loaded 
script.onload = function() { 
    alert('loaded'); 
} 

//check if it didn't load 
script.onerror = function() { 
    alert('foo!'); 
} 
+0

onerror funktioniert nicht: 'script.src = 'http: //nothingishere.pl/script.js';' –

+0

[diese Demo prüfen] (http://jsfiddle.net/kBkmr /) – Joseph

+0

Demo funktioniert nicht, wenn nicht existierendes Skript von einer gültigen Adresse heruntergeladen wird - z script.src = 'https://apis.google.com/js/authNONEXISTENT.js' Nur geladen wird dann ausgelöst. –