我有一个博客超过10年&我想在它上面运行一段Javascript来捕获断开的链接。我正在使用:
function trackError(e) {
var ie = window.event || {};
var errMsg = e.message || ie.errorMessage || "404 error on " + window.location;
var errSrc = (e.filename || ie.errorUrl) + ': ' + (e.lineno || ie.errorLine);
mailme([errMsg, errSrc]);
}
// Triggering an error in the console:
// You have to use something like setTimeout(function() { notThere(); }, 0);
window.addEventListener('error', trackError, true);
但是这并没有以有用的方式捕捉错误。什么被打破,在哪一行等。
错误对象的 JSON.stringify
仅在"{"isTrusted":true}"
中产生,这是无用的。我在Chrome中注意到e.path
,但在Firefox中没有。有没有办法在Javascript中记录有关损坏的图像链接的有用信息,或者我需要在浏览器引擎上提交错误?
答案 0 :(得分:8)
它正在运作。它不会阻止错误在您的控制台中显示在Chrome中,但它正在运行。不要因为您仍然在Chrome中看到错误而感到困扰。您的代码正在执行,您可以编写mailme
函数,它将执行。我使用以下内容进行测试:
<强>的index.html 强>
<html>
<head>
<script src="./app.js"></script>
</head>
<body>
<img src="http://pictures.natalian.org/screenies/2004/sep/29/13:23:00/">
</body>
</html>
<强> app.js 强>
var mailme = function() {
console.log('Caught!');
}
window.addEventListener('error', function(e) {
var ie = window.event || {};
var errMsg = e.message || ie.errorMessage || "404 error on " + window.location;
var errSrc = (e.filename || ie.errorUrl) + ': ' + (e.lineno || ie.errorLine);
mailme([errMsg, errSrc]);
}, true);
输出(Chrome)
输出(Firefox)
答案 1 :(得分:5)
https://developer.mozilla.org/en/docs/Web/API/GlobalEventHandlers/onerror:
当资源(例如
<img>
或<script>
)无法加载时,使用接口Event的错误事件会在元素处触发,从而启动加载,并且调用元素上的onerror()处理程序。这些错误事件不会冒泡到窗口,但(至少在Firefox中)可以使用单个捕获window.addEventListener来处理。
(由我突出显示。)
因此,它可能仅仅是针对Firefox所说的问题,对于Chrome来说是不一样的。