阻止事件冒泡兼容chrome,firefox,IE的方法;

不多說,先給方法:

function oCancelBubble()

{

var oEvent = arguments.callee.caller.arguments[0] || event;

oEvent.cancelBubble = true;

};

下面來解釋,上面的阻止冒泡這么簡潔;

一:關于火狐(firefox)及ie下event獲取的兩種方法

經常有同事問我在火狐瀏覽器怎么獲取event的方法,大多是想獲取event.keyCode的功能兩種方法

第一種方法

復制代碼代碼如下:

function a(e){

e=e||window.event;

alert(e.keyCode);

}

第二種方法

復制代碼代碼如下:

function a(){

e=arguments.callee.caller.arguments[0] || window.event;

alert(e.keyCode);

}

ie和firefox下都如下調用

復制代碼代碼如下:

這里要解釋一下

arguments.callee.caller.arguments[0],

簡單例子如下:

復制代碼代碼如下:

function a(){

b();

}

function b(){

alert(b===arguments.callee)

alert(b.caller===a)

alert(arguments.callee.caller===a)

}

a();

上面的這個例子將輸出3個true,表明當a()調用時,函數b與函數a的關系。

arguments.callee

指的就是當前的函數體

arguments.callee.caller

就是當前函數的上級函數

所以當執(zhí)行onclick="a()"時arguments.callee就是a(),

arguments.callee.caller就是function onclick

onclick的第一個能數就是event,也就是

arguments.callee.caller.arguments[0]

這個。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容