gpt4 book ai didi

javascript - 是什么决定了一个事件是否传递给了我在 javascript 中的函数?

转载 作者:行者123 更新时间:2023-11-30 13:06:38 26 4
gpt4 key购买 nike

当从 anchor 元素中嵌入的脚本调用时,参数 e 将是未定义的。

function testOverrideClick(e) {
console.log(e);
e.preventDefault();
}

....

<body onload="afterLoad();">
<a id="testAnchor" href="http://www.google.com" onclick="testOverrideClick()">test link</a>

但是,如果我从脚本注册事件处理程序,e 将有效:

function afterLoad() {
document.getElementById("testAnchor").onclick = testOverrideClick;
}

...

<a id="testAnchor" href="http://www.google.com">test link</a>

发生了什么事?

最佳答案

event 标识符传递给您的函数。

<a id="..." href="..." onclick="testOverrideClick(event)">test link</a>

这是可行的,因为在符合 W3 的浏览器中分配的函数看起来像这样:

elem.onclick = function(event) {
testOverrideClick(event);
}

所以事件参数会被传递下去。


在旧的 IE 中,它看起来更像这样:

elem.onclick = function() {
testOverrideClick(event);
}

所以全局的window.event会被传递。

关于javascript - 是什么决定了一个事件是否传递给了我在 javascript 中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15453224/

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