1. 程式人生 > >javascript 中event是全局變量

javascript 中event是全局變量

PE patch event對象 sco listener cli 行為 trigge 瀏覽器

技術分享圖片

技術分享圖片

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

), don‘t know what there is more to say about that. Of course you can access global variables from everywhere (that‘s why they are global). – Felix Kling Jun 21 ‘11 at 14:03

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 scope

(in this case window). 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(),取消事件的默認行為。如果 cancelabletrue,則可以使用這個方法。

  • stopImmediatePropagation(),取消事件的進一步捕獲或冒泡,同時阻止任何事件處理程序被調用(DOM3 級事件中新增)。

  • stopPropagation(),取消事件的進一步捕獲或冒泡。如果 bubblestrue,則可以使用這個方法。

  • target,事件的目標。

  • trusted,為 true 表示事件是瀏覽器生成的。為 false 表示事件是由開發人員通過 JavaScript 創建的(DOM3 級事件中新增)。

  • type,被觸發的事件的類型。

  • view,與事件關聯的抽象視圖,等同於發生事件的 window 對象。

更多內容可參考《JavaScript 闖關記》之事件。

javascript 中event是全局變量