繁体   English   中英

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

[英]Catching net::ERR_NAME_NOT_RESOLVED for fixing bad img links

我有一个博客超过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中记录有关损坏的图像链接的有用信息,或者我需要在浏览器引擎上提交错误?

它正在发挥作用。 它不会阻止错误在您的控制台中显示在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)

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

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

(突出显示我。)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM