Подтвердить что ты не робот

Javascript: как отображать ошибки script во всплывающем предупреждении?

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

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

Ответ 1

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

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

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, вам необходимо сделать следующее:

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

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

Ответ 2

На всякий случай кто-то хотел бы использовать его с 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));
    }
});

Ответ 5

<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>