IE8中的图像加载事件; event未定义,这是`window`对象

时间:2013-01-07 12:07:08

标签: javascript

我编写了以下代码,它在除<IE9

之外的所有现代浏览器中都有效
<script>
    function eventH(event) {
        alert(this);
    }
</script>

<img src="h300.png" onload="eventH(arguments[0]);"/>

它会触发事件处理程序,但event未定义且this值是父对象。为什么呢?

IE是否以不同的方式处理这个问题,或者在理解这个问题时我错了?

1 个答案:

答案 0 :(得分:3)

Internet Explorer 8及更低版本不实现W3C事件模型。对于IE,您需要的可能是window.event的一部分。

QuirksMode提供了一套很好的examples如何编写与现代浏览器和旧IE版本兼容的事件处理代码。

另请注意,在不使用点表示法调用JavaScript函数时,全局窗口对象为this(ES5严格模式除外,在这种情况下不允许访问this)。相反,您可以将this作为参数传递给您的函数。

但是,最好只使用.addEventListener()(W3C模型)或.attachEvent()(Microsoft模型)附加事件处理程序,而不是在HTML中指定它。然后,this将按预期工作。