0
我開發使用JavaScript的Web應用程序中的Javascript的keydown:既爲箭頭和減號,變通爲Firefox
- 如果按下右箭頭,我們去到一個新的水平檢查。
- 如果減號被按下,我們減少難度。
- 如果空格鍵被按下,我們暫停。
因爲我想檢查箭頭,所以我不能使用keypress事件,所以我使用的是keydown事件。代碼的簡化部分(使用jQuery)如下。
$(document).keydown(dealWithKeyDown);
function dealWithKeyDown(evt) {
if (evt.which == 39) // Right arrow.
nextLevel();
if (evt.which == 189) // Minus sign.
reduceDifficulty();
if (evt.which == 32) // Space.
pause();
}
我現在遇到的問題是它在Firefox中不起作用。在FF中,減號的鍵碼是173而不是189。(還有更多不同之處。)任何人都可以提出簡單/優雅的解決方法嗎?
我能想到的最簡單的解決方法是使用'evt.key'屬性,但'evt.key'在Chrome中未定義,而對於空格按鈕,IE給出'evt.key =='空格鍵「'同樣如此,而Firefox會將'evt.key =='」'視爲true。這是一個不一致的噩夢。
請問什麼火狐的意義是這樣做呢?他們的鍵碼因爲某種原因而不同? – MCTaylor17 2014-11-22 02:25:55
_「這是一個不一致的噩夢」_ ...這就是爲什麼有那裏的圖書館爲你處理這個問題:-)我建議你看一下https://github.com/keithamus/jwerty – CBroe 2014-11-22 02:42:21