[英]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.