我正在用JavaScript编写一个应用程序,它应该创建一个新的图像。有时它会失败。通过附加一个image.onerror
事件侦听器,我能够检测到它发生的时间。问题是:我如何了解发生了什么错误--图像的error对象带来了什么参数?到目前为止我只发现
image.onerror = function (errorMsg, url, lineNumber, column, errorObj) {
console.log('Error: ' + errorMsg + ' Script: ' + url + ' Line: ' + lineNumber
+ ' Column: ' + column + ' StackTrace: ' + errorObj);
}
我是从javascript: how to display script errors in a popup alert?得到的:
返回Error: [object Event] Script: undefined Line: undefined Column: undefined StackTrace: undefined
,在error对象中,我找不到任何与消息或错误代码相关的内容。
发布于 2016-02-26 01:44:43
image.onerror处理程序将接收一个事件参数,该参数不包含任何有关错误原因的信息。
发布于 2017-01-12 07:12:48
如果您想捕获普通HTML img
元素上的错误(而不是通过DOM动态创建错误),这种方法似乎效果很好:
<img src="http://yourdomain/site/badimage.png"
onerror="javascript:imageErrorHandler.call(this, event);"/>
请注意,.call(this, event)
语法很重要,因此您可以访问错误处理程序中的this
和event
对象。
然后,您可以定义图像错误处理程序,如下所示。(确保在img
元素之前定义它,以避免竞争条件。)假设您已经连接了jQuery:
function imageErrorHandler(evt) {
var $e = $(this);
var src = $e.attr("src");
console.log("Image URL '" + src + "' is invalid.");
};
在Chrome中进行了测试。没有尝试过其他浏览器。
发布于 2015-06-25 00:15:37
Image.onerror附带了一个处理程序,而不是错误消息,url,...
因此,参数列表中的第一项是事件。
如果你尝试用你的代码
image.onerror(errorMsg, url, lineNumber, column, errorObj) {
console.log(errorMsg);
console.log(url)
}
您应该为第一个日志获取一个事件,为第二个日志获取一个未定义的事件。
我还没有找到任何关于Image对象的繁重处理程序附带的内容的合法引用。但看起来它主要是用来向用户而不是开发人员标记错误。
https://stackoverflow.com/questions/28545619
复制相似问题