为什么这个事件处理程序使用“e = e || event”?

时间:2013-03-20 23:52:07

标签: javascript javascript-events cross-browser

有人可以解释一下这行代码意味着什么:

function(e) { e = e || event; e.returnValue = false; return false; }

为什么参数名为e
如果我将其更改为'myparam',它会起作用吗? e = e是什么意思?

变量event(在||之后)声明在哪里? 什么是e.returnValue?

3 个答案:

答案 0 :(得分:15)

这是所有基本的事件管理,虽然缺少e.preventDefault() ...

要在事件处理程序触发时将其分解:

  • 有些浏览器会将参数传递给保留事件数据的回调(这是符合标准的方式)
  • 其他浏览器(主要是旧的IE)将事件数据放在window.event(这里只用event访问,这是有风险的,因为它依赖于没有该名称的局部变量)

接下来,e = e || event;是一种标准的说法“如果参数未通过,则将其默认为||之后的任何内容”。在这种情况下,如果未传递event参数,则它会查找全局变量。

e.returnValue是阻止事件导致其默认操作的三种方法之一。其他两个是e.preventDefault && e.preventDefault()(在您发布的代码中显然不存在),return false;

答案 1 :(得分:2)

这一行只是为了使IE8及以下功能与所有其他浏览器相同。所有其他浏览器将目标元素(e)传递给事件函数。

所以这段代码的作用是:

如果e存在,请保留e。如果它不存在,您使用的是较旧版本的IE,我们将windows.event对象分配给e。现在所有浏览器的行为方式都相同。

答案 2 :(得分:1)

这段代码测试是否存在e对象,否则使用对象event并将其分配给e。之后,它将属性returnValue设置为false并返回false。

这是以相同的方式在IE和其他浏览器上运行的代码,无论事件对象是否被调用eevent