Javascript:图像对象的onerror事件有哪些参数?如何获取与图像相关的错误的其他详细信息?

Javascript:图像对象的onerror事件有哪些参数?如何获取与图像相关的错误的其他详细信息?,javascript,image,object,parameters,onerror,Javascript,Image,Object,Parameters,Onerror,我正在用JavaScript编写一个应用程序,它将创建一个新的图像。有时它会失败。我可以通过附加image.onerror事件侦听器来检测它发生的时间。问题是:我如何知道发生了什么错误-图像的错误对象带来了什么参数?到目前为止我只发现 image.onerror = function (errorMsg, url, lineNumber, column, errorObj) { console.log('Error: ' + errorMsg + ' Script: ' + url + '

我正在用JavaScript编写一个应用程序,它将创建一个新的图像。有时它会失败。我可以通过附加
image.onerror
事件侦听器来检测它发生的时间。问题是:我如何知道发生了什么错误-图像的错误对象带来了什么参数?到目前为止我只发现

image.onerror = function (errorMsg, url, lineNumber, column, errorObj) {
  console.log('Error: ' + errorMsg + ' Script: ' + url + ' Line: ' + lineNumber
  + ' Column: ' + column + ' StackTrace: ' +  errorObj);
}
我从中得到:


返回
错误:[对象事件]脚本:未定义行:未定义列:未定义堆栈跟踪:未定义
,在错误对象中,我找不到任何与消息或错误代码相关的内容。

Image.onerror附带的是处理程序,而不是错误消息、url

因此,参数列表中的第一项是事件

如果您使用

image.onerror(errorMsg, url, lineNumber, column, errorObj) {
  console.log(errorMsg);
  console.log(url)
}
第一个日志应该有一个事件,第二个日志应该没有定义


对于图像对象的繁重处理程序,我无法找到任何合法的参考。但是看起来它主要用于向用户而不是开发人员标记错误。

AFAIK image.onerror处理程序将接收一个事件参数,该参数不包含有关错误原因的任何信息。

如果您希望捕获普通HTML
img
元素上的错误(而不是通过DOM动态创建一个),这似乎很有效:

 <img src="http://yourdomain/site/badimage.png" 
      onerror="javascript:imageErrorHandler.call(this, event);"/>

用铬做的测试。没有尝试过其他浏览器。

确切的结果可能在一定程度上取决于您使用的浏览器,但您只会得到一个参数,即事件。我猜你找到的资料已经过时了。我黑了这个小JSFiddle,所以你可以自己试试。只需在脚本底部输入和输出正确和“错误”的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"

这对于查找从api获取的404图像src非常有效。感谢您的努力,@svub,但问题是如何在JavaScript中创建图像,而不是如何从存在或不存在的URI加载图像。哦,似乎其他人也弄错了。啊,所以生成图像的代码有时可能会失败。您是否在浏览器的JS控制台中看到类似堆栈跟踪的内容?MDN备份:
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"