我對當前Web應用程序的關鍵捕獲狀態感到憤怒。只要你知道你的用戶打算在某個特定的地方打字(例如input
字段),只要你想爲整個「應用程序」做全局快捷鍵,它就會很好用,但它似乎崩潰了。捕獲Web應用程序的所有關鍵事件的最佳方法?
我想知道是否有更好的方法來捕獲全部網頁的關鍵事件,而不是我目前使用的方法。
我目前的方法是使用JQuery Hotkeys插件,綁定到document
元素,即:
$(document).bind("keyup", "delete", function() {});
這偉大工程的用途,但例如在Firefox中,如果用戶恰好心不在焉地把他們的將鼠標懸停在導航欄上,刪除鍵有時會導致用戶「返回」,並且該處理程序永遠不會收到該鍵,以便我可以停止傳播。
我應該綁定一個不同的元素嗎?有更好的插件嗎?我應該避免使用任何綁定到普通Web瀏覽器中的東西的密鑰嗎?
隨着越來越多的Web應用程序開始模仿他們的桌面應用程序,這似乎是Web開發人員日益需要的基本功能。
編輯:我應該指出,我已經在使用e.stopPropagation()
和e.preventDefault()
。主要的問題似乎是,有時事件甚至不會傳遞給綁定函數。我基本上想知道是否有人想出了一個「更高」的元素來綁定到除document
以外的其他元素。還是有一種我從未想到的替代方案?例如,在頁面中嵌入一個不可見的Flash元素,然後將所有的鍵傳遞給Javascript(我認爲這不會起作用)。
我想,在這一點上,我正在做的事情是「標準的,知名的方式」。我試圖看看有沒有廣爲人知的外部方式,也許有人知道:-)。
是否有可能迫使專注於一個不可見的文本框?我會建議使用通常在瀏覽器中共享的密鑰。當你點擊退格鍵時,期待頁面不會回退,這很愚蠢。 – 2011-02-10 16:18:12
你想創建快捷方式還是要製作鍵盤記錄? – helle 2011-02-10 16:19:44
@helle我想創建快捷方式,而不是鍵盤記錄。 – 2011-02-10 16:21:52