gpt4 book ai didi

javascript - this 和 DOM 事件处理程序

转载 作者:行者123 更新时间:2023-11-30 00:08:25 25 4
gpt4 key购买 nike

MDN 上的以下说法似乎不正确:

When the event handler is invoked, the this keyword inside the handleris set to the DOM element on which the handler is registered.(source)

这个声明是关于an on<...> event handler不是 addEventListener .

<p><a id="link" href="#" onclick="EventHandler();">click me</a></p>

<script>
function EventHandler() {
console.log(this);
//the this keyword inside the handler is NOT set to the DOM element
//it sets to the window object
}
</script>

这与 MDN 上的声明相矛盾。

当然,您可以通过 this作为 EventHandler 的参数或者简单地使用 addEventListener .但那是题外话。

问题的主题是thisan on<...> event handler .

我的问题是:是我的理解不正确还是MDN上的说法不正确?

最佳答案

每当事件处理程序 is inlined 时,此语句为真,正如您引用的句子后的链接中所述。

但是,在你的情况下,MDN specify :

When a function is used as an event handler, its this is set to theelement the event fired from (some browsers do not follow thisconvention for listeners added dynamically with methods other thanaddEventListener).

我在最新的 Chrome 和 FF 中测试过,这些浏览器不遵循这个约定。

关于javascript - this 和 DOM 事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37526213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com