Поймать ошибку JavaScript во внешнем файле сценария - PullRequest
8 голосов
/ 22 сентября 2011

У меня есть немного JavaScript ( JQuery Tools 'Overlay ), который может вызвать исключение при удалении на страницу, которая использует его неправильно, и я пытаюсь обработать это изящно.

У меня есть общий обработчик window.onerror, который спасает эти ошибки и сообщает о них на сервер, однако это не срабатывает.

Я также не могу обернуть попытку / перехватить этот код, так как он включен в HTML как удаленный скрипт.

Есть какие-нибудь идеи о том, как можно спасти ошибки, которые выдает внешний скрипт?1009 *

ОБНОВЛЕНИЕ : Вот пример.Я должен исправить себя, window.onerror срабатывает , но сценарий не продолжает работать (в этом примере предупреждение никогда не срабатывает).

<html>
<script type="text/javascript">
window.onerror = function(e){ console.log("caught error: "+e); return true;}
</script>
<body>

<!-- this is the line in the dom that causes the script to throw -->
<a rel="nofollow"></a>

<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">google.load("jquery", "1.4.1");</script>
<script src="http://cdn.jquerytools.org/1.2.5/tiny/jquery.tools.min.js"></script>

<script type="text/javascript">
//this code will throw an error in jquery tools
$("a[rel]").overlay();

alert("it's ok, I still ran.");
</script>

</body>

</html>

1 Ответ

5 голосов
/ 22 сентября 2011

Определите обработчик ошибок перед загрузкой / выполнением любого другого сценария.

<script>window.onerror = function(e){}</script>
<script src="external.js"></script>
<script>
function ole(){alert("Hi!")}
ole();
</script>

Если ваш сценарий содержит синтаксическую ошибку, обработчик ошибок не будет вызван:

<script>window.onerror=function(e){alert("?")}
<script>
!@ //The error won't be caught.
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...