2012-12-25 60 views
6

我在網上找到了下面的代碼,當我看到這個解決方案時,我想知道這個關鍵代碼對於所有瀏覽器是否都是一樣的。Javascript char代碼是否與所有或某些瀏覽器兼容?

var CalendarFilter = Backbone.View.extend({ 
     // ... 
     events: { 
     'click .filter': 'filter', 
     'keypress input[type=text]': 'filterOnEnter' 
     }, 
     filterOnEnter: function(e) { 
     if (e.keyCode != 13) return; 
     this.filter(e); 
     }, 
     filter: function(e) { /* ... */ }); 
     } 
    }); 

只是一個疑問,謝謝。

回答

6

首先,charCode不是keyCodecharCode如下ASCII字符集,而keyCode是關鍵的特定索引..這兩者之間的不同的值可以在這裏看到:Keyboard Event Character Values for the Lower ASCII Character Set - O'Reilly Answers

一個主要的區別和keyCode之間charCodecharCode is deprecated和典型地具有在一些沒有價值瀏覽器[除了0]引用時

有趣的是,onkeypress似乎返回character code instead of the keyCode,而onkeyup和onkeydown按預期工作,所以檢測到keyCode值時可能會出現一些問題。您可以在這裏測試這JavaScript - Detecting keystrokes - 其他參考:keyCode and charCode

keyCodecharCodewhichnot recommended by w3c,但是,仍存在對keyCode型號的傳統支持。堅固的跨瀏覽器/平臺支持與fixed virtual keyCodes完成,保持獨立的鍵盤佈局 - 因此是「虛擬」。

其他虛擬鍵碼 - 固定虛擬鍵碼之外 - 似乎不同廠商來一貫的執行,以及:KeyboardEvent - Document Object Model (DOM) | MDNVirtual-Key Codes (Windows)

jQuery使用它自己的keyCode/charCode事件對象的屬性:.which,它試圖統一keyCodecharCode。並有利於keyCode值 - event.which – jQuery API

總之,您的具體keyCode:「13」,應該支持JavaScript的瀏覽器大部分工作,因爲它是一個固定的虛擬鍵代碼,並且與所有瀏覽器和平臺

一致
1

當然。整個電腦都是一樣的。

1

keyCode 13(換行符)在跨操作系統或跨瀏覽器兼容性方面沒有問題。別擔心。

1

關鍵代碼是標準代碼,但最好也檢查關鍵代碼1010是「換行」的關鍵代碼,而13是「回車」的關鍵代碼。兩者之間存在歷史差異(類型編寫者需要發送兩種信號,「換行」將紙張向上移動,「回車」將類型部分移動到紙張的左側)。

例如,快速檢查顯示按Ctrl +輸入發送鍵代碼10在Chrome在Windows上。可能有些'nix系統使用keyCode 10,但我無法確認。谷歌搜索顯示iPhone may send 10。可能還有其他情況。有些系統使用一個和另一個使用另一個來表示換行符(最後我檢查,Windows使用兩者的組合),但在現代世界中,它們實際上都意味着輸入,所以它不會傷害到覆蓋兩個基地。

相關問題