从JavaScript错误事件处理程序获取更多详细信息

从JavaScript错误事件处理程序获取更多详细信息,javascript,events,error-handling,Javascript,Events,Error Handling,我已经做了一个简单的弹出式图像查看器。您可以在此处看到它的演示页面: 这里的实际JS: 我试图在setPopup()函数(第169行左右)中创建的图像对象中添加一个有用的错误处理程序,但事实证明这很困难。注册处理程序工作正常,当出现问题时,处理程序将启动 问题是,像“错误的MIME类型”这样的不重要的事情被视为错误,至少在Windows上是这样(在OSX、Chrome和FF4中似乎很好),所以即使图像加载得很好,每次都会弹出错误消息 是否有某种方法可以确定实际错误是什么,这样我就可以过滤掉重

我已经做了一个简单的弹出式图像查看器。您可以在此处看到它的演示页面:

这里的实际JS:

我试图在
setPopup()
函数(第169行左右)中创建的图像对象中添加一个有用的错误处理程序,但事实证明这很困难。注册处理程序工作正常,当出现问题时,处理程序将启动

问题是,像“错误的MIME类型”这样的不重要的事情被视为错误,至少在Windows上是这样(在OSX、Chrome和FF4中似乎很好),所以即使图像加载得很好,每次都会弹出错误消息

是否有某种方法可以确定实际错误是什么,这样我就可以过滤掉重要的错误(例如404)并做出相应的响应?为了澄清,我问的是如何处理错误事件,而不是JavaScript异常

我尝试检查传递给处理程序的错误对象,但它似乎不包含任何有用的信息

try {
 var t = a.notexists + b.thisisnotreal;
} catch (e) {
 /* do something with the error */
}

编辑: 看来我对错误原因的理解是错误的——结果是这一行导致了错误:

popupImg.src = "";
然而,问题仍然存在——确切地知道出了什么问题是很有用的。

您看过Mozilla浏览器中的吗?您总是可以在
try…catch
()块中包装内容,以查看异常详细信息,这提供了大量信息

try {
 var t = a.notexists + b.thisisnotreal;
} catch (e) {
 /* do something with the error */
}

错误对象在IE中的实用性有限,你可以得到一些非标准的东西,但它实际上并没有帮你什么忙。对于Mozilla,有一些非标准属性值得一提,特别是
stack
lineNumber
——对调试最有用。

问题是我没有试图捕获JavaScript异常,我正在侦听一个错误事件。您应该将相同的错误对象传递给您的错误处理程序-这是您将从Javascript中获得的更多错误信息。遗憾的是,它实际上不包含任何有用的信息-我只能对用户说“出了问题。可能是x、y或z。”(