不多說,先給方法:
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
就是當前函數的上級函數
所以當執行onclick="a()"時arguments.callee就是a(),
arguments.callee.caller就是function onclick
onclick的第一個能數就是event,也就是
arguments.callee.caller.arguments[0]
這個。