在IE9上加载图像后的事件

时间:2013-06-09 17:27:48

标签: javascript html image internet-explorer-9

我正在写一个网站,使用javascript,HTML IE9

我找到了通过以下方式动态加载图像的解决方案:

document.getElementById("id_image").filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = document.getElementById("id_filepic").value

<IMG>相关的id_image和与<input id="id_filepic" type="file">相关的id_filepic

行后:

document.getElementById("id_image").filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = document.getElementById("id_filepic").value

在html页面上显示图像之后发生的确切事件(因此,图像具有宽度+高度),以及如何捕获该事件?

了解IE9的解决方案对我很重要。

2 个答案:

答案 0 :(得分:1)

它不一定要在那一行之后,因为它无论如何都是异步的,但它是:

document.getElementById("id_image").filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = document.getElementById("id_filepic").value;
document.getElementById("id_image").addEventListener('load', (function(i) {
    return function() {
        console.log(i, 'loaded');
    }, false);
})(i));

来源:Javascript Image onload event binding

答案 1 :(得分:1)

我想参与我的解决方案,我找到了。

好吧,上面的内容是不可编辑的,并且“onload”也不是正确的事件(在我调查后使用“过滤器”命令时没有被触发)。

我所做的是稍微延迟,使用超时命令(大约一秒钟),如下所示:

    setTimeout(function () {
        alert("w: " + $("#id_image").width());
        alert("h: " + $("#id_image").height());
    }, 1000); 

(甚至100毫秒就足够了,但是我检查了非常大的图像.1秒是非常大的,不会因大图像上的代码而掉落。)

延迟之后,我可以毫无问题地检索图像的宽度和高度。

这就完成了这个问题。