所以我正在努力获得高级的Javascript技能。所以我正在做一个关于 Lynda.com 的实用JS教程。第 3 章是关于事件处理程序的,我有点困惑(注意:我已经删除了使脚本在所有浏览器中工作的代码)。我重新观看了视频,但根本没有帮助。
e
指的是什么?我根本没有一个名为 e 的变量或我可以看到的任何其他变量。-
false
指的是什么?由于我正在处理链接,它与return false
相同吗?function clickLink(e) { alert("You Clicked the Link"); } function linkClicked(e) { addEventHandler(document.getElementById("clickLink"), "click", clickLink, false); } addEventHandler(window, "load", linkClicked, false);
-
e
仅指已发生的事件,您可以将其更改为所需的任何内容。它只是将事件传递给需要使用它的各种函数等。 -
false
只是意味着事件没有被"消费",即,如果同一事件有多个处理程序,它可以被其他处理程序使用。所以,是的,它实际上与return false
相同。(请参阅下面关于冒泡的链接)
有关消费事件和冒泡的更多信息,请参阅此处。
首先,e 只是一个你将在函数中收到的参数。你也可以写这样的东西:
function evtHandler(){
console.log(arguments[0]);
}
其中参数[0]是你给定的e
。触发事件时调用处理程序函数。通常在 e 参数中,您有一个对象,其中包含有关如何触发事件的一些信息。
时,该函数上的最后一个参数是布尔参数,它指示句柄是否应该在事件处理程序的链中冒泡。它不是像你返回 false 那样,而是如果事件也会由其他处理程序处理。如果要返回 false 或忽略以前的默认处理,可以在 evtHandler
中调用 preventDefault
函数。
附言小心事件处理程序,因为跨浏览器兼容性存在一些问题;
如果你在clickLink(e)
中谈论e,那么我可以说你可以在javascript函数原型中声明你想要的任何参数,但是在调用它时你可以提供可选的参数addEventHandler
false
clickLink(e)
。
例如,如果函数FO
定义为:
function FO(e){
//function body here
}
那么你可以这样称呼它:
FO();
或
FO("BAR");