HTML图像加载触发一个错误
HTML Image onload triggers onerror?
我有一个html图像,标记为follow
<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被触发后,oneror也被触发,并覆盖handleLoad函数所做的工作。遗憾的是,这个应用程序只在IE浏览器中受支持,但它只在IE11版本中出现,在IE10中,它可以正常工作。
我不确定onLoad是如何触发的,然后在onLoad从src中找到图像后立即触发onError。
第二次编辑
正如下面的评论所示,我无法在IE11上重现这一点。这可能是因为我的代码同时试图做不同的事情,但有什么方法可以解释oneror处理程序是触发的吗?我试着打印出Image项目的src,但这似乎不是问题所在,因为onError和onLoad都返回了相同的src,而且图像显然在那里。无论如何,我可以看到是什么导致onError触发?
window.onload事件被程序员用来启动他们的web应用程序。IE为标签支持一个非常方便(但非标准)的属性:defer。此属性的存在将指示IE将脚本的加载推迟到DOM加载之后。不过,这只适用于外部脚本。另一个需要注意的重要事项是,不能使用脚本设置此属性。这意味着您不能使用DOM方法创建脚本并设置defer属性——它将被忽略。
使用方便的defer属性,我们可以创建一个迷你脚本,调用我们的onload处理程序:
<script defer src="ie_onload.js" type="text/javascript"></script>
这个外部脚本的内容将是一行代码,用于调用我们的onload事件处理程序:
init();
function init() {
// quit if this function has already been called
if (arguments.callee.done) return;
// flag this function so we don't do the same thing twice
arguments.callee.done = true;
// do stuff
};
正如我们所看到的,在IE中使用DOM事件处理程序有很多问题,因此条件编译可能是解决OP问题的另一个选择。IMHO你应该去这个链接:
http://dean.edwards.name/weblog/2005/09/busted/
- 我怎么能把一个错误当作未捕获的错误来记录呢
- 在这个使用hasOwnProperty的对象扩展程序中有一个错误,I'我不确定那个bug是什么,也不确定这个扩展
- javascript window.location在检查firebug时给了我一个错误的url路径
- new SharedWorker(“whatever.js”)返回一个错误
- JSON.parse给了我一个错误,但JSONLint说它'是一个有效的json
- 有人能向我解释一下我犯的一个错误吗
- Jasmine:测试setTimeout函数会抛出一个错误
- JavaScript中的一个错误
- 为什么jqPlot显示了一个错误的饼图,其中包含通过AJAX检索的数据
- Webrtc和socket.io:createanswer()总是有一个错误.为什么?我的代码连接了两个对等体,但其中只
- 使用 jQuery 构建一个元素会给我一个错误
- Chai 期望 [函数] 抛出一个(错误)未通过测试(使用 Node)
- 在我的 jquery 函数中得到一个错误
- Addeventlistener 已转换为 IE.也许是另一个错误
- 我有一个错误,由于某种原因,号码被更改了,而不是名字
- 我无法建立离子机器人项目..它给了我一个错误:生成cmd enont
- JQueryAJAX调用:304 respose产生一个错误
- 继续得到一个错误,即某个东西不是函数,但找不到原因
- jQuerylib会导致一个错误,直到刷新为止
- HTML图像加载触发一个错误