簡體   English   中英

原型在Opera中觀察事件問題

[英]Prototype observe event problem in Opera

我正在使用Prototype並在window.document上執行Event.observe。

我正在捕捉enter(keyCode 13)和alt + f(altKey && keyCode = 70)。

我的代碼正在使用firefox,IE和chrome。 隨着Opera沒有。 輸入是catched,但僅當我的焦點不在任何文本輸入中時。 Alt + F根本不起作用。

它是原型中的錯誤還是我需要在Opera上做一些“額外”的事情才能繼續? 正如我所說,在所有其他瀏覽器我的代碼工作....

首先,以下是一個有用的資源: http//unixpapa.com/js/key.html

其次,您應該知道keydown(或keyup)和keypress之間存在差異。 keypress通常不允許修改鍵,雖然它確實允許一些像Opera一樣控制。 最好使用keydown來實現跨瀏覽器的一致性。

無論是否輸入文本框,我都會在Opera 11.10中得到keyCode === 13.無論是否使用Prototype如下:

Event.observe(document, 'keydown', function (e) {
    alert(e.charCode+'::'+e.keyCode);
});

或直接使用本機方法(使用attachEvent for IE):

if (document.addEventListener) {
    document.addEventListener('keydown', function (e) {
        alert(e.charCode+'::'+e.keyCode);
    }, false);
}
else { // IE
    document.attachEvent('onkeypress', function (e) {
        alert(e.charCode+'::'+e.keyCode);
    });
}

但是,除非與控件或功能鍵結合使用,否則在文本框中確實沒有檢測到alt(盡管這在Chrome或IE中不起作用)。 這可能是因為Windows使用alt來訪問應用程序菜單欄。

您可以嘗試使用控制鍵並使用preventDefault()(以避免執行頁面查找等ctrl-f之類的默認行為),盡管這可能會使您的用戶感到厭煩,因為他們可能不希望為您的頁面禁用其瀏覽器行為。

Alt-F激活菜單,Opera不允許JavaScript處理此按鍵。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM