0

这段代码是一个更大的脚本的核心,它在几乎所有浏览器中都运行良好。然而它在IE中不起作用。所以我把它剥离下来,发现 image.onload 没有在 IE 中触发。

我已经进行了一些研究,并防止它成为图像缓存问题。一方面,在缓存任何内容之前第一次发生错误,更重要的是,onload 事件附加在 src 之前。

我也有理由确定我正在以与 IE 兼容的方式附加 onload 事件,那么给出了什么,为什么我没有收到警报?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">             
            <script type="text/javascript">

        function generate(){
            var imageGen = document.createElement("img");
            imageGen.setAttribute('onload',"primer()"); 
            imageGen.setAttribute('src', "http://www.google.co.uk/images/srpr/logo3w.png");
            document.getElementById('image').appendChild(imageGen);
            }   

        function primer() { 
            alert("here now");
            }

        </script>
    </head>

    <body onload="generate()">
        <div id="image">

        </div>
    </body>
</html>

我在这里托管一个版本

不幸的是,我只能访问 IE8,所以我不知道它是否在其他版本中仍然存在,即使它需要修复。

4

2 回答 2

2

首先,事件不是属性,不能使用setAttribute. 它可能有效,也可能无效。

其次,尝试创建图像对象而不是图像元素:

var imageGen = new Image();
imageGen.src = "http://www.google.co.uk/images/srpr/logo3w.png";
imageGen.onload = primer;
document.getElementById('image').appendChild(imageGen);

现场测试用例- 在 IE9 和 IE9 兼容模式下对我来说效果很好,应该类似于 IE8。

于 2012-07-01T14:04:34.077 回答
1

你可以试试 imageGen.onload = prime 而不是 imageGen.setAttribute('onload',"primer()"); ?

于 2012-07-01T12:07:45.477 回答