JavaScript: как отобразить ошибки скрипта во всплывающем окне оповещения? - PullRequest
30 голосов
/ 09 апреля 2010

Я хочу отображать ошибки скрипта во всплывающем предупреждении, а не отображать их в консоли браузера.

window.onerror = function() {
  var message = /* get error messages and put them here */;
  alert(message);
  return true;
};

Ответы [ 5 ]

47 голосов
/ 09 апреля 2010

Да, это правильный путь.

См. Ссылку здесь:

http://www.javascriptkit.com/javatutors/error2.shtml

И объяснение того, как увидеть более подробную информацию об ошибке здесь:

http://www.javascriptkit.com/javatutors/error3.shtml

Их пример:

window.onerror = function(msg, url, linenumber) {
    alert('Error message: '+msg+'\nURL: '+url+'\nLine Number: '+linenumber);
    return true;
}

Если вы хотите отобразить СПИСОК ошибок в одном всплывающем окне, это сложнее.

Так как ошибки происходят 1 на 1, вам нужно сделать следующее:

  • имеет window.onerror обработчик, хранящий информацию об ошибках в некотором массиве
  • Периодически проверять этот массив - либо по таймеру, либо при каждом N-м вызове обработчика window.onerror, или обоими.

    Когда проверка произойдет, обработайте весь массив, отобразите содержимое по желанию и очистите массив

2 голосов
/ 01 августа 2014

На всякий случай, если кто-то захочет использовать его с jQuery:

$(window).on("error", function(evt) {

    console.log("jQuery error event:", evt);
    var e = evt.originalEvent; // get the javascript event
    console.log("original event:", e);
    if (e.message) { 
        alert("Error:\n\t" + e.message + "\nLine:\n\t" + e.lineno + "\nFile:\n\t" + e.filename);
    } else {
        alert("Error:\n\t" + e.type + "\nElement:\n\t" + (e.srcElement || e.target));
    }
});
0 голосов
/ 20 июня 2017
<script>$(window).on("error", function(evt) {

console.log("jQuery error event:", evt);
var e = evt.originalEvent; // get the javascript event
console.log("original event:", e);
if (e.message) { 
    alert("Error:\n\t" + e.message + "\nLine:\n\t" + e.lineno + "\nFile:\n\t" + e.filename);
} else {
    alert("Error:\n\t" + e.type + "\nElement:\n\t" + (e.srcElement || e.target));
}
});
</script>
0 голосов
/ 09 апреля 2010

Проверьте это: http://www.javascriptkit.com/javatutors/error3.shtml. Похоже, подпись function(message, url, linenumber).

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