我正在使用Prototype並在window.document上做Event.observe。原型在Opera中觀察事件問題
我在捕捉輸入(keyCode 13)和alt + f(altKey & & keyCode = 70)。
我的代碼與超級firefox,IE瀏覽器和鉻。隨着歌劇沒有。輸入被捕獲,但只有當我的焦點不在任何文本輸入。 Alt + F根本不起作用。
是原型中的bug還是我需要在Opera上做一些額外的操作才能繼續?正如我所說的,在所有其他的瀏覽器我的代碼工程....
我正在使用Prototype並在window.document上做Event.observe。原型在Opera中觀察事件問題
我在捕捉輸入(keyCode 13)和alt + f(altKey & & keyCode = 70)。
我的代碼與超級firefox,IE瀏覽器和鉻。隨着歌劇沒有。輸入被捕獲,但只有當我的焦點不在任何文本輸入。 Alt + F根本不起作用。
是原型中的bug還是我需要在Opera上做一些額外的操作才能繼續?正如我所說的,在所有其他的瀏覽器我的代碼工程....
首先,下面是一個有用的資源:http://unixpapa.com/js/key.html
其次,你應該知道有KEYDOWN(或KEYUP)和按鍵之間的差異。按鍵通常不允許修改鍵,儘管它允許一些在Opera中的控制。更好地使用keydown進行跨瀏覽器一致性。
我得到的keyCode === 13在Opera 11.10無論是進入還是不文本框,而且不管是否使用原型是這樣的:
Event.observe(document, 'keydown', function (e) {
alert(e.charCode+'::'+e.keyCode);
});
或直接使用本地方法(使用的attachEvent爲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除非有控制或功能鍵結合(儘管這並不在鉻或IE工作)。這可能是因爲Windows使用alt來訪問應用程序菜單欄。
您可以嘗試使用控制鍵並使用preventDefault()(以避免類似ctrl-f做頁面查找的默認行爲),儘管這可能會惹惱您的用戶,他們可能不希望他們的瀏覽器行爲在您的頁面上被禁用。
Alt-F激活菜單,Opera不允許JavaScript處理此按鍵。