經常有同事問我在Firefox瀏覽器怎麼擷取event的方法,大多是想擷取event.keyCode的功能兩種方法
第一種方法:
複製代碼 代碼如下:
function a(e){
e=e||window.event;
alert(e.keyCode);
}
ie瀏覽器如下調用
複製代碼 代碼如下:
<body onclick="a()">
firefoxFirefox瀏覽器如下調用
複製代碼 代碼如下:
<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]這個。