2015-07-29 12 views
8

Najpierw przedstawię, co próbuję osiągnąć: Chciałbym mieć kod, który łączy się z moim serwerem za pośrednictwem stron internetowych. Wysyłam wiadomości do przeglądarki, aby przekazać je zdalnie. Chciałbym, aby ten kod (z wyjątkiem tego, że nie zawiera błędów) nie byłby narażony na inne błędy strony, więc nadal mogę odświeżyć stronę zdalnie, aby naprawić wspomniane błędy.Czy oddzielne tagi skryptów Javascript są odizolowane od siebie nawzajem?

Podczas moich testów na najnowszym safari w przeglądarce Chrome i iPadzie, jeśli w jednym znaczniku skryptu wystąpi wyjątek środowiska wykonawczego, wykonanie js zostanie wstrzymane. Jednak wszelkie inne javascript w innych znacznikach skryptów nadal nie stanowi problemu. Czy to oczekiwane zachowanie, czy też mam szczęście? Wrzuciłem TypeError, throw new Error('something') i nieokreślone błędy, a moje inne skrypty wciąż działają poprawnie. I coś zrobić tak:

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

Jeśli rzucę błędy bajillion w mainApp.js, mój kod websocket nadal działa i odświeża stronę w reloadCode.js, nawet jeśli mainApp.js jest oceniana jako pierwszy.

+0

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

Odpowiedz

2

O ile nie wchodzą w interakcje między nimi ... Wtedy tak, są oddzielone od siebie.

+0

źródło? Specyfikacja odniesienia? – Qix

3

Ok Właśnie zrobiłem test, aby upewnić się, (nie sądzę oddzielne pliki JS powinien bałagan nawzajem z kompilacji)

raz pierwszy stworzył prostą stronę HTML, który obejmował 3 pliki JS. Oto pliki JS

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 i myscript3 się ran, ale to nie działa myscript2 z powodu błędu, tak długo, jak reloadCode.js działa dobrze wtedy będzie wszystko A-OK

Wystarczy być jasne, mam tylko 2 alerty, a nie 3, to dlatego, że myscript2.js nie skompilował.

+0

Jakiekolwiek informacje, dlaczego tak się dzieje? –

+0

Ile okien alertów otrzymujesz? – Onilol

+0

Awesome. dzięki płótnie i Onilolowi za pewność. Jak wspomniał Qix, jeśli ktoś zna specyfikację w tym zakresie, byłoby to dodatkowe uspokojenie. – thehammer

0

W pierwszym przykładzie napisałem trzy alert() w trzech znacznikach skryptu oddzielnie (example). Alarm z ostrzeżeniem ("PIERWSZY") i ostrzeżenie ("TRZECIA").

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

W drugim przykładzie napisałem trzy alert() w jednym tagu skryptu (example). Alert tylko po zwolnieniu ("FIRST").

<script> 
alert('FIRST'); 
errorAlert('SECOND'); 
alert('THIRD'); 
</script> 
Powiązane problemy