關於Firefox(firefox)及ie下event擷取的兩種方法

來源:互聯網
上載者:User

經常有同事問我在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]這個。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.