咱們都知道 IE 和 FireFox 對「事件」取得的方式 不同 spa
(1) IE 可利用全局變量 window.event 事件
(2) FireFox 可利用傳遞參數的方法來取得 event ,或者若是沒有傳遞參數,則系統會自動將「事件」放在第一個參數 arguments[0] get
(1) 若是 event
e = arguments.callee.caller.arguments[0] || window.event; 變量
寫成 方法
e = arguments[0] || window.event; call
FireFox 在按下button後不會有反應,並且會在控制檯出現「TypeError: e is undefined」的錯誤信息錯誤
也就是 arguments[0]前面必定要加 arguments.callee.caller
arguments
(2) 若是這兩句 參數
e = arguments.callee.caller.arguments[0] || window.event;
a = e.target || e.srcElement;
合併成一句也會出錯
(2-1) 若是合併成
var a = arguments.callee.caller.arguments[0].target || window.event.srcElement;
則 FireFox不會出錯,因為FireFox的正確式寫在前面
IE 則會出現「沒法取得屬性'target'的值:物件為null或未經定義」的錯誤
(2-2) 若是合併成
var a = window.event.srcElement; | arguments.callee.caller.arguments[0].target
IE 不會錯,因為此次是IE的正確式寫在前面
FireFox 就會出現「TypeError: window.event is undefined」的錯誤
(2-3)也就是必定要先獲得正確表示的「事件」,再利用該「事件」來讀取「觸發事件的源頭」,必定要分兩步,不能合成一步