0

我已经编写了下面的代码,它可以在所有现代浏览器中运行,除了<IE9

<script>
    function eventH(event) {
        alert(this);
    }
</script>

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

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

IE 是否以不同的方式处理这个问题,或者我在理解这个方面有什么错误?

4

1 回答 1

3

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

QuirksMode 提供了一组很好的示例,说明如何编写与现代浏览器和旧 IE 版本兼容的事件处理代码。

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

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

于 2013-01-07T12:12:39.217 回答