我想在弹出式提醒中显示脚本错误,而不是在浏览器控制台中显示它们。
window.onerror = function() {
var message = /* get error messages and put them here */;
alert(message);
return true;
};
答案 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>