2015-07-29 11 views
8

Zuerst gebe ich an, was ich erreichen möchte: Ich hätte gerne Code, der über Websockets mit meinem Server verbunden ist. Ich sende Nachrichten an den Browser, um zu sagen, dass sie remote neu laden sollen. Ich möchte, dass dieser Code (abgesehen davon, dass er selbst keine Fehler enthält) nicht von anderen Seitenfehlern betroffen ist, so dass ich die Seite immer noch dynamisch aktualisieren kann, um die Fehler zu beheben.Sind separate Javascript Script Tags voneinander isoliert?

In meinen Tests auf der neuesten Safari von Chrome und iPad, wenn eine Laufzeitausnahme in einem Skript-Tag auftritt, wird diese js-Ausführung angehalten. Jedes andere Javascript in anderen Skript-Tags ist jedoch weiterhin kein Problem. Ist das erwartetes Verhalten, oder habe ich nur Glück? Ich habe TypeError, throw new Error('something') und undefined Fehler geworfen, und meine anderen Skripte laufen immer noch gut. Ich mache so etwas wie so:

<script type='text/javascript' src='reloadCode.js'/> 
<script type='text/javascript' src='mainApp.js'/> 

Wenn ich einen bajillion Fehler in mainApp.js, mein websocket Code noch läuft und aktualisiert die Seite in reloadCode.js werfen, auch wenn mainApp.js zuerst ausgewertet wird.

+0

http://stackoverflow.com/questions/10825992/prevent-javascript-from-stopping-when-error-is-encountered –

Antwort

2

Es sei denn, sie interagieren zwischen ihnen ... Dann ja, sie sind voneinander getrennt.

+0

Source? Spezifikationsreferenz? – Qix

3

Ok Ich habe gerade einen Test selbst, um sicherzustellen, (ich glaube nicht, separate JS-Dateien sollten Chaos sich bis kompilieren)

Ich habe zunächst eine einfache HTML-Seite, die 3 JS-Dateien enthalten. Hier sind die JS-Dateien

myscript1.js

alert("1"); 

myscript2.js

alert("2")a; 

myscript3.js

alert("3"); 

Html

<html> 
<body> 
<script src="myscript1.js"></script> 
<script src="myscript2.js"></script> 
<script src="myscript3.js"></script> 
</body> 
</html> 

myscript1 und myscript3 sind lief, aber es wegen eines Fehlers nicht myscript2 laufen, so lange, wie Ihr reloadCode.js gut funktioniert, dann werden Sie alle

Just A-OK nur klar zu sein, ich habe 2 Warnungen, nicht 3, dies ist, weil myscript2.js nicht kompiliert wurde.

+0

Irgendwelche Informationen, warum dies passiert? –

+0

Wie viele Alarmfenster erhalten Sie? – Onilol

+0

Ehrfürchtig. Danke Canvas und Onilol für die Zusicherung. Wie Qix erwähnt, wenn jemand eine Spezifikation diesbezüglich weiß, wäre das besonders beruhigend. – thehammer

0

Im ersten Beispiel schrieb ich drei alert() in drei Skript-Tags separat (example). Alarm ausgelöst ('FIRST') und Alarm ('THIRD').

<script>alert('FIRST');</script> 
<script>errorAlert('SECOND');</script> 
<script>alert('THIRD');</script> 

Im zweiten Beispiel schrieb ich drei alert() in einem Script-Tag (example). Nur Alarm ausgelöst ('FIRST').

<script> 
alert('FIRST'); 
errorAlert('SECOND'); 
alert('THIRD'); 
</script>