Javascript:图像对象的oneror事件有哪些参数?如何获取与图像相关的错误的其他详细信息
Javascript: Which parameters are there for the onerror event with image objects? How to get additional details on an error related to an image?
我正在用JavaScript编写一个应用程序,它应该会创建一个新图像。有时它会失败。我能够通过附加一个image.onerror
事件侦听器来检测它的时间。问题是:我如何了解发生了什么错误?图像的错误对象带来了什么参数?到目前为止,我只发现
image.onerror = function (errorMsg, url, lineNumber, column, errorObj) {
console.log('Error: ' + errorMsg + ' Script: ' + url + ' Line: ' + lineNumber
+ ' Column: ' + column + ' StackTrace: ' + errorObj);
}
我是从:javascript:如何在弹出警报中显示脚本错误?
返回Error: [object Event] Script: undefined Line: undefined Column: undefined StackTrace: undefined
,在错误对象中我找不到任何与消息或错误代码相关的内容。
AFAIK image.onerror处理程序将接收一个不包含任何错误原因信息的单个Event参数。
Image.onerror附带了一个处理程序,而不是错误消息、url。。。
因此,参数列表中的第一项是一个事件。
如果你尝试你的代码与
image.onerror(errorMsg, url, lineNumber, column, errorObj) {
console.log(errorMsg);
console.log(url)
}
您应该为第一个日志获取一个事件,为第二个日志获取未定义的事件。
对于Image对象的繁重处理程序,我还找不到任何合法的参考。但看起来它主要用于向用户而不是开发人员标记错误。
如果您想在普通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中进行了测试。尚未尝试其他浏览器。
确切的结果可能在一定程度上取决于您使用的浏览器,但您只能得到一个参数,即事件。我猜你找到的消息来源已经过时了。我黑了这个小JSFiddlehttp://jsfiddle.net/Lsag7pt6/所以你可以自己试试。只需在脚本底部注释正确和"错误"的URL,打开JavaScript控制台(F12),您就会看到事件的打印输出及其所有属性和值。
作为参考,对于我得到的正确URL:
Event {isTrusted: true, type: "load", target: img, currentTarget: img, eventPhase: 2…}
bubbles:false
cancelBubble:false
cancelable:false
composed:false
currentTarget:null
defaultPrevented:false
eventPhase:0
isTrusted:true
path:Array(6)
returnValue:true
srcElement:null
target:null
timeStamp:2109.725
type:"load"
否则
Event {isTrusted: true, type: "error", target: img, currentTarget: img, eventPhase: 2…}
bubbles:false
cancelBubble:false
cancelable:false
composed:false
currentTarget:null
defaultPrevented:false
eventPhase:0
isTrusted:true
path:Array(7)
returnValue:true
srcElement:img
target:img
timeStamp:1189.805
type:"error"
- 获取ajax加载的图像的大小
- 点击(右键点击)使用传单地图库获取图像覆盖的像素坐标
- 如何使用javascript和xpath获取图像src
- 如何使用javascript从文件夹中获取图像并发布直接链接
- 如何使用Pixijs获取在加载的精灵表资产中定义的图像
- 如何从 javascript 中可能具有一个或多个图像的字符串中仅获取图像名称
- 获取图像节点js的主色
- 获取图像的平均外部像素颜色
- 使用asp.net FileUpload时从javascript获取图像宽度和高度
- 如何获取显示在谷歌搜索右侧的图像链接
- CodeIgniter:用于获取包括图像在内的值的控制器
- jQuery:获取图像加载错误的详细信息
- 如何使用php和javascript获取网页中显示图像的路径
- 使用回调获取图像像素数据
- 使用JavaScript从外部图像获取颜色
- 将完整路径图像获取到输入文件中
- 如何利用织物画布上的背景图像获取绘图路径中的图像
- 无法将图像加载到画布中并为该图像获取base64编码
- Android从内部图像获取ImageData()-SECURITY_ERR:DOM异常18
- 将html转换为图像(获取dom的快照)