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