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

hen*_*dry 16 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);
Run Code Online (Sandbox Code Playgroud)

但是,这并没有以有用的方式捕捉错误.什么坏了,哪一行等

加载图片时出错

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

Ric*_*ler 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>
Run Code Online (Sandbox Code Playgroud)

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);
Run Code Online (Sandbox Code Playgroud)

输出(Chrome)

输出(Firefox)

  • 至关重要的是,它不会在任何浏览器中显示任何有关错误的内容.这是我认为的问题. (2认同)

CBr*_*roe 5

https://developer.mozilla.org/en/docs/Web/API/GlobalEventHandlers/onerror:

当资源(例如<img><script>)无法加载时,会启动加载的元素上触发使用接口Event的错误事件,并调用元素上的 onerror()处理程序.这些错误事件不会冒泡到窗口,但是(至少在Firefox中)可以使用单个捕获window.addEventListener来处理.

(突出显示我.)

所以它可能仅仅是Firefox所说的问题,对Chrome来说也不一样.