常有同事問我在火狐瀏覽器怎麼取得event的方法,大多是想取得event.keyCode的功能兩種方法
第一種方法:
function a(e){
e=e||window.event; alert(e.keyCode);
}
ie瀏覽器如下調用
firefox火狐瀏覽器如下呼叫
這樣就可以呼叫成功
這種方法在firefox需要帶個參數過去,不是太好,下面介紹第二種方法
第二種方法
: 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]這個。