javascript 中event是全局變量
The only thing I can think of is that event is in fact window.event
and it makes itself available when some event dispatches and Event...but that would mean that any element could get that event information if called at the same time as the event when it triggers?
You are right (window.event
It might be confusing. But if there is no parameter or variable in the current function that is named event
, you know it must come from a higher scopewindow
). And if you pass it as event
, then you are actually access the parameter and not window.event
. So it just works how functions work :) – Felix Kling
原文: https://stackoverflow.com/questions/6426497/is-event-a-global-variable-that-is-accessible-everywhere-inside-the-callback-cha
------------------------------------------------------分割線-----------------------
event代表的是window.event對象,他把這個參數傳進去了,如果你不傳也沒關系,但是要考慮到瀏覽器有沒有window.event的問題,以前貌似FF是沒有的;
在觸發 DOM 上的某個事件時,會產生一個事件對象 event
,這個對象中包含著所有與事件有關的信息。包括導致事件的元素、事件的類型以及其他與特定事件相關的信息。例如,鼠標操作導致的事件對象中,會包含鼠標位置的信息,而鍵盤操作導致的事件對象中,會包含與按下的鍵有關的信息。所有瀏覽器都支持 event
對象,但支持方式不同。
DOM 中的事件對象
兼容 DOM 的瀏覽器會將一個 event
對象傳入到事件處理程序中。無論指定事件處理程序時使用什麽方法(DOM1 級或 DOM2 級),都會傳入 event
對象。來看下面的例子。
var btn = document.getElementById("myBtn");
btn.onclick = function(event){
console.log(event.type); // "click"
};
btn.addEventListener("click", function(event){
console.log(event.type); // "click"
}, false);
這個例子中的兩個事件處理程序都會彈出一個警告框,顯示由 event.type
屬性表示的事件類型。這個屬性始終都會包含被觸發的事件類型,例如 "click"
(與傳入 addEventListener()
和 removeEventListener()
中的事件類型一致)。
在通過 HTML 特性指定事件處理程序時,變量 event
中保存著 event
對象。請看下面的例子。
<input type="button" value="Click Me" onclick="console.log(event.type)"/>
以這種方式提供 event
對象,可以讓 HTML 特性事件處理程序與 JavaScript 函數執行相同的操作。
event
對象包含與創建它的特定事件有關的屬性和方法。觸發的事件類型不一樣,可用的屬性和方法也不一樣。不過,所有事件都會有下表列出的成員。
-
bubbles
,表明事件是否冒泡。 -
cancelable
,表明是否可以取消事件的默認行為。 -
currentTarget
,其事件處理程序當前正在處理事件的那個元素。 -
defaultPrevented
,為true
表示已經調用了preventDefault()
(DOM3 級事件中新增)。 -
detail
,與事件相關的細節信息。 -
eventPhase
,調用事件處理程序的階段:1表示捕獲階段,2表示“處於目標”,3表示冒泡階段。 -
preventDefault()
,取消事件的默認行為。如果cancelable
是true
,則可以使用這個方法。 -
stopImmediatePropagation()
,取消事件的進一步捕獲或冒泡,同時阻止任何事件處理程序被調用(DOM3 級事件中新增)。 -
stopPropagation()
,取消事件的進一步捕獲或冒泡。如果bubbles
為true
,則可以使用這個方法。 -
target
,事件的目標。 -
trusted
,為true
表示事件是瀏覽器生成的。為false
表示事件是由開發人員通過 JavaScript 創建的(DOM3 級事件中新增)。 -
type
,被觸發的事件的類型。 -
view
,與事件關聯的抽象視圖,等同於發生事件的window
對象。
更多內容可參考《JavaScript 闖關記》之事件。
javascript 中event是全局變量