捕获网:: ERR_NAME_NOT_RESOLVED用于修复错误的img链接

时间:2016-04-09 03:55:51

标签: javascript error-handling

我有一个博客超过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);

但是这并没有以有用的方式捕捉错误。什么被打破,在哪一行等。

Error loading an image

错误对象的

JSON.stringify仅在"{"isTrusted":true}"中产生,这是无用的。我在Chrome中注意到e.path,但在Firefox中没有。有没有办法在Javascript中记录有关损坏的图像链接的有用信息,或者我需要在浏览器引擎上提交错误?

2 个答案:

答案 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来说是不一样的。