我在寫一個基於contenteditable的小部件,它需要自行處理文本輸入。這是相當容易對付的ASCII和非ASCII字符,像這樣的東西:現在檢測組合字符以忽略其中的一些
container_element.addEventListener('keypress', function(event) {
if (event.ctrlKey || event.altKey || event.metaKey) {
return;
}
if (event.which != 0 && event.charCode != 0) {
event.preventDefault();
var c = String.fromCharCode(event.which);
handle_character(c);
}
});
,如果配置我的本地系統輸入非ASCII字符通過死鍵組合(比如,AltGr鍵例如),上述失敗慘不忍睹。喜歡谷歌文檔的花式編輯似乎在各種操作系統和瀏覽器中都能很好地處理這種情況,而不需要任何外部插件,所以很顯然,是可能來自瀏覽器觸發的事件,以檢測從哪個字符生成死鑰匙的組成序列。但是,我一直無法弄清楚究竟如何(甚至對於單個瀏覽器/操作系統組合,比如說Chrome/Linux)都不知道。
因此,我的問題:有人會知道如何檢測當我們得到一個死鍵組合序列時,哪一個字符是從按鍵或keydown處理程序輸入?