javascript:如何在弹出警报中显示脚本错误?

时间:2010-04-09 03:44:49

标签: javascript error-handling

我想在弹出式提醒中显示脚本错误,而不是在浏览器控制台中显示它们。

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

6 个答案:

答案 0 :(得分:47)

是的,这是正确的方法。

参见此处的参考资料:

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处理程序,或两者兼而有之。

    检查发生时,处理整个数组,根据需要显示内容,并清空数组

答案 1 :(得分: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));
    }
});

答案 2 :(得分:0)

答案 3 :(得分:0)

检查出来:http://www.javascriptkit.com/javatutors/error3.shtml。签名似乎是function(message, url, linenumber)

答案 4 :(得分:0)

帮助解决此问题

  •   

    如果超过名称20的字符,则应显示错误消息,不要在此处使用max。

  •   

    出生日期应在1990-2010之间

  • 全部应显示在警告弹出窗口中

<script>
function validation(){
   
    var errorMsg = new Array();

    if(!document.getElementById("name").value){
        errorMsg.push("Please Enter Full Name");
    }

    if(!document.getElementById("age").value){
        errorMsg.push("Please Enter age");
    }

   if(!document.getElementById("designation").value){
        errorMsg.push("Please Enter designation");
    }

    if(!document.getElementById("salary").value){
        errorMsg.push("Please Enter salary");
    }

  

    if(!document.getElementById("dob").value){
        errorMsg.push("Please Enter dob");
    }

    var messageHtml = "";

    errorMsg.forEach(function (message) {
        messageHtml += "<li>" + message + "</li>";
    }

    document.getElementById("error").innerHTML = messageHtml;
}
</script>
<style>
#empForm{

 position:absolute;
padding-left: 10px;
    top: 25%;
    left: 55%;
    width:18em;
    height:20em;
    margin-top: -9em; 
    margin-left: -15em; 
    border: 1px solid #ccc;
    background-color: #f3f3f3;
}
#salary{

    margin-left: 48px;
}
#date{
    margin-left: 6px;
padding-right: 26px;
}
#designation{
margin-left: 10px;
}
#age{
margin-left: 59px;
}
#name{
margin-left: 47px;
}
#submit{

}
</style>
<html>
<head>
<title>Employee Details</title>
<body>


<div id=empForm>
<h1>Registration Form</h1>

<form name="EmployeeData" action="return validation()">
<div><label>Name </label><input type="text" id="name" name="name"></div></br>

<div><label>Age </label><input type="number" id="age" name="age"></div></br>

<div><label>Designation </label><input type="text" id="designation" name="designation"></div></br>

<div><label>Salary </label><input type="number" id="salary" name="salary"></div></br>

<div><label>Date of Birth </label><input type="date" id="date" name="date"></div></br>

<div id="submit"><center><input type="submit" name="submit" ></center></div>
</div>
</body>
</html>

答案 5 :(得分:-1)

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