当从 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/