2013-03-20 83 views
6

有人可以解釋我是什麼這行代碼的意思是:爲什麼這個事件處理程序使用「e = e || event」?

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

爲什麼參數命名e
如果我將其更改爲「myparam」,它會起作用嗎?
e = e是什麼意思?

變量event(在||之後)聲明的位置在哪裏? 什麼是e.returnValue?

+1

記得一次提出一個問題。並先搜索。 – 2013-03-21 00:13:08

+0

這是一個問題。其他人只是爲了澄清這個問題的含義! – 2013-03-21 00:14:22

回答

11

這是所有的基本事件管理,雖然它缺少e.preventDefault() ...

要打破它,當一個事件處理程序被觸發:

  • 有些瀏覽器參數傳遞給回調保存事件數據(這是符合標準的方式)
  • 其他瀏覽器(大多數是舊IE)將事件數據放在window.event(這裏訪問的只是event,這是危險的,因爲它依賴於存在沒有這個名字CAL變量)

接下來,e = e || event;是說:「如果該參數不獲通過,它默認爲||後,凡是」的標準方式。在這種情況下,如果事件參數沒有通過,那麼它會查找全局變量。

e.returnValue是阻止事件導致其默認操作的三種方法之一。另外兩個是e.preventDefault && e.preventDefault()(這在你發佈的代碼中顯然不存在),並且return false;

1

這段代碼測試是否存在e對象,否則使用對象event並將其分配給e。之後,它將屬性returnValue設置爲false並返回false。

這是以相同的方式在IE和其他瀏覽器上運行的代碼,無論事件對象被稱爲eevent

+2

我發現「設置爲e」模棱兩可 - 哪種方式是分配?也許「分配給e」會更清楚...... – 2013-03-21 00:01:12

1

這行只是爲了讓IE8和其它瀏覽器的功能相同。所有其他瀏覽器將目標元素(e)傳遞給事件函數。

那麼這段代碼的作用是:

如果e存在,保持e。如果它不存在,則使用舊版本的IE,並將windows.event對象分配給e。現在所有瀏覽器的行爲都是一樣的。

相關問題