我已经编写了下面的代码,它可以在所有现代浏览器中运行,除了<IE9
<script>
function eventH(event) {
alert(this);
}
</script>
<img src="h300.png" onload="eventH(arguments[0]);"/>
它触发事件处理程序,但event
未定义且this
值是父对象。为什么?
IE 是否以不同的方式处理这个问题,或者我在理解这个方面有什么错误?
我已经编写了下面的代码,它可以在所有现代浏览器中运行,除了<IE9
<script>
function eventH(event) {
alert(this);
}
</script>
<img src="h300.png" onload="eventH(arguments[0]);"/>
它触发事件处理程序,但event
未定义且this
值是父对象。为什么?
IE 是否以不同的方式处理这个问题,或者我在理解这个方面有什么错误?
Internet Explorer 8 及更低版本不实现 W3C 事件模型。对于 IE,您需要的可能是window.event
.
QuirksMode 提供了一组很好的示例,说明如何编写与现代浏览器和旧 IE 版本兼容的事件处理代码。
另请注意,当您在不使用点符号的情况下调用 JavaScript 函数时,全局窗口对象是this
(在 ES5 严格模式下除外,this
在这种情况下不允许访问)。相反,您可以将this
其作为参数传递给您的函数。
但是,最好只使用.addEventListener( )(W3C 模型)或.attachEvent()(Microsoft 模型)附加您的事件处理程序,而不是在 HTML 中指定它。然后,this
将按预期工作。