我有html页面导致js错误和它的全局处理程序。
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">
<script type="text/javascript" src="js/jquery-3.1.0.min.js"></script>
<script type="text/javascript">
$(function () {
window.onerror = function (errorMsg, url, lineNumber) {
alert('Error: ' + errorMsg + ' Script: ' + url + ' Line: ' + lineNumber);
}
throw new Error("this is error");
});
</script>
</head>
<body>
<div>Test page</div>
</body>
</html>
我收到警报:&#34;错误:脚本错误。脚本:行:0&#34;。如您所见,错过了错误信息。我如何在此处获取此信息,就像我可以在开发人员工具中看到错误一样。铬的任何扩展都不合适。我必须在javascript中捕获他们的信息错误。
答案 0 :(得分:2)
如果脚本中发生语法(?)错误,从不同的源加载,则不会报告语法错误的详细信息以防止泄漏信息(请参阅错误363897)。相反,报告的错误只是“脚本错误”。在某些使用crossorigin属性并让服务器发送相应的CORS HTTP响应头的浏览器中,可以覆盖此行为。解决方法是隔离“脚本错误”。并且知道错误细节只能在浏览器控制台中查看而且无法通过JavaScript访问。
我也碰到了这个。请参阅此处的备注部分:https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror
这意味着开发设置可能需要进行一些调整以避免此政策问题。我只是在这里猜测,所以不要把它视为理所当然。
答案 1 :(得分:0)
使用console.log(errorMsg, url, lineNumber)
代替警报来获取更易读的日志。您可以在浏览器开发者控制台中看到该日志。您还可以检查try..catch的使用情况,以便更好地处理错误。
答案 2 :(得分:0)
使用带有匿名attirbute的jquery脚本,以及带有[access-control-allow-origin:*]的脚本服务器响应头。您的错误抛出代码使用jquery回调运行。
答案 3 :(得分:0)
我只是为了给那些来这里找人的人添加答案。
来源:https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror
请转至该URL,因为您可以看到
有五个参数window.onerror = function(message, source, lineno, colno, error) { ... }
最后一个是您所需要的,它完整记录了您在控制台中看到的内容,以防出现错误。
message: error message (string). Available as event (sic!) in HTML onerror="" handler.
source: URL of the script where the error was raised (string)
lineno: Line number where error was raised (number)
colno: Column number for the line where the error occurred (number)
error: Error Object (object)
然后,错误对象具有两个属性
message
stack
堆栈将包含您所需的所有信息。
答案 4 :(得分:-1)
errorMsg
不是消息"this is error"
;它是Script error.
,这正是您所看到的。你根本就没有收到错误信息。 onerror
不适合替换try-catch块。