經常有同事問我在火狐浏覽器怎麼獲取event的方法,大多是想獲取event.keyCode的功能兩種方法
第一種方法:
復制代碼 代碼如下:
function a(e){
e=e||window.event;
alert(e.keyCode);
}
ie浏覽器如下調用
復制代碼 代碼如下:
<body onclick="a()">
firefox火狐浏覽器如下調用
復制代碼 代碼如下:
<body onclick="a(event)">
這樣就可以調用成功
這種方法在firefox需要帶個參數過去,不是太好,下面介紹第二種方法
第二種方法:
復制代碼 代碼如下:
function a(){
e=arguments.callee.caller.arguments[0] || window.event;
alert(e.keyCode);
}
ie和firefox下都如下調用
復制代碼 代碼如下:
<body onclick="a()">
這裡要解釋一下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]這個。