【发布时间】:2015-04-18 21:19:51
【问题描述】:
我有一个标记如下的html图像
<image src = 'image.png' onerror = "handleError(this)" onload = "handleLoad(this)">
function handleError(n){
getFirstChild(n.parentNode).style.display = '',n.style.display = 'none';
}
function handleLoad(n){
getFirstChild(n.parentNode).style.display = 'none',n.style.display = '';
}
我有一个单独的函数 getFirstChild 但这与以下问题没有任何关系。
基本上,在 IE 11 中发生的事情是 onLoad 处理程序被触发并且我的函数正在正确设置显示,但是在触发 onload 之后,onerror 也会被触发并覆盖 handleLoad 函数所做的事情。 遗憾的是,此应用程序仅在 IE 浏览器中受支持,但仅在 IE11 版本中发生,在 IE10 中按预期工作。
我不确定onLoad如何触发,然后在onLoad从src找到图像后立即触发onError。
第二次编辑
正如下面的评论所拍摄的,我无法在 IE11 上的 jfiddle 中重现这一点。这可能是因为我的代码试图同时做不同的事情,但是有什么方法可以查看为什么触发了 onerror 处理程序?我尝试打印出 Image 项的 src,但这似乎不是问题,因为 onError 和 onLoad 返回相同的 src,并且图像显然在那里。 无论如何,我可以看到导致 onError 触发的原因是什么?
【问题讨论】:
-
不确定这是否是一个问题,但您在图像标签内的处理程序周围缺少引号。
-
啊,好的,没问题。我无法通过 jsFiddle 得到您在 IE11 (Win8) 中描述的错误。
-
@AWolf 如果有机会,我会用 HTML 的格式结构更新问题。
-
您可以使用 IE 开发者工具,设置断点并单步执行。访问页面时清除控制台,然后刷新并再次检查控制台。里面可能有错误...
-
@Tim 我使用了 IE 开发工具,但控制台中没有生成错误。我什至监控了网络,所有响应都没有错误地返回。我不知道还能去哪里看。
标签: javascript html asp.net onload onerror