Похоже, что 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>