Firefox неправильно обрабатывает блоки try / catch в window.onerror - PullRequest
3 голосов
/ 22 ноября 2011

Похоже, что Firefox обрабатывает любую ошибку, возникающую в обработчике события window.onerror, как фатальное исключение, даже если исключение перехвачено.Следующий пример кода работает должным образом в IE, Chrome и Safari.В Firefox вызов несуществующего метода abc () немедленно останавливает выполнение вместо выполнения блока catch и оставшейся части обработчика onerror.

Это ожидаемое поведение в Firefox или я что-то не так делаю?

<!DOCTYPE html>
<html lang="en-US">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.7.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            window.onerror = function() {
                console.log('begin onerror');

                try {
                    abc(); // create a runtime error by calling a method that doesn't exist
                } catch(e) { 
                    console.log('catch block'); 
                }

                console.log('end onerror');
            };

            $('#btn').click(function() {
                xyz(); // create a runtime error by calling a method that doesn't exist
            });
        });
    </script>
</head>
<body>
    <form action="" name="frmEdit">
        <input type="button" value="Test" id="btn" name="btn" />
    </form>
</body>
</html>

1 Ответ

1 голос
/ 27 ноября 2011

Как показывает этот тестовый пример , он связан с jQuery.

Замена зависимости jQuery минимальным кодом, необходимым для запуска этого поведения, либо объяснит это, либо упростит отладку и исправление на стороне Firefox.

[edit] Благодаря разработчикам jrotello, dmethvin и Firefox, основная проблема должна быть исправлена ​​в Firefox 14 (ее можно протестировать до ее выпуска, используя http://nightly.mozilla.org/)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...