你是如何理解var e=e||window.event的

你是如何理解var e=e||window.event的?相信很多人都能給我個回答說是:為了實現多種瀏覽器兼容。

不錯,確實是為了實現瀏覽器兼容,但是它又是如何實現瀏覽器兼容的呢?

其實,如果把他寫全的話,就好理解多了吧。

function(event){

var e=event?event||window.event;

}

這樣來看的話,相信粗懂java的人都會知道了,如果存在event,那么var e=event;而如果不存在event,那么var e=window.event.這樣的話我們就可以從字面上理解了個公式的意思,也能大體猜到的確能夠實現兼容的。

但是我們再來細挖一下,它在究竟在什么瀏覽器下等于什么呢,又是為什么呢?我們先附上一個神圖:


首先:我們進行ie和其他瀏覽器的判斷

ie的document對象有一個all屬性,它的里面存放了頁面的所有標簽,而其它瀏覽器是沒有的,所以在ie中,事件對象的傳播會綁定在全局的windows上,所以ie瀏覽器肯定是都支持window.event的

其次:特殊的firefox;

firefox只支持事件對象作為參數傳入,而這又恰恰是ie6/ie7/ie8所無法實現的,所以可以成功的區(qū)分這兩類,寫個實例進行測試的話,如下:


最后,就是ie9/chrome/opera/safari,則兩種方式都支持,僅憑這點很難判定瀏覽器類型

但是,只要寫上var e=event?event||window.event,我們的確是可以保證各瀏覽器的兼容的,你說對么

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • ??JavaScript 與 HTML 之間的交互是通過事件實現的。 ??事件,就是文檔或瀏覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,678評論 1 11
  • 前端開發(fā)面試題 <a name='preface'>前言</a> 只看問題點這里 看全部問題和答案點這里 本文由我...
    自you是敏感詞閱讀 899評論 0 3
  • 在用戶使用比較多的瀏覽器中,分為2大派系 - ie內核和非ie內核,像theworld、maxthon、green...
    子約nan閱讀 591評論 1 3
  • 男兒縱馬出邊關 馳騁青山綠水間 適才飲馬潮河畔 轉眼己登長白山
    燕山松閱讀 568評論 61 58
  • 你快樂嗎?有多快樂呢?也許比你想象得更快樂。我們大多數人腦海中都有一堆麻煩的事兒——即將來臨或是已經錯過的dead...
    沐_心閱讀 1,505評論 0 4

友情鏈接更多精彩內容