17

谁能解释一下这行代码是什么意思:

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

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

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

4

3 回答 3

25

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

要分解它,当触发事件处理程序时:

  • 一些浏览器将参数传递给保存事件数据的回调(这是符合标准的做法)
  • 其他浏览器(主要是旧的 IE)将事件数据放入window.event(在此处使用 just 访问event,这是有风险的,因为这依赖于没有具有该名称的局部变量)

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

e.returnValue是阻止事件导致其默认操作的三种方法之一。另外两个是e.preventDefault && e.preventDefault()(您发布的代码中明显没有),并且return false;

于 2013-03-20T23:56:40.877 回答
5

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

所以这段代码的作用是:

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

于 2013-03-20T23:58:39.510 回答
1

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

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

于 2013-03-20T23:56:08.683 回答