2016-04-26 92 views
2

在窗口處理,我希望的AltGr鍵組成,它成功地做變音字符,但看在幕後事實證明,窗戶的AltGr鍵等同於Alt鍵 + Ctrl +從這裏可以看出[1](使用該工具來解釋此頁面上的鍵盤事件)。這只是在Windows上的行爲;在Linux上AltGr是不是拆分成Alt + Ctrl這樣子。的AltGr爲Alt + Ctrl

我如何區分Alt鍵 + Ctrl鍵運行在Windows這樣的情況下正常的AltGr操作?

[1] http://javascript.info/tutorial/keyboard-events

回答

0

modern browsers,你可以使用location property of the keyboard event以確定是否左或右ALT鍵(右你的情況是AltGr鍵)被按下。

document.getElementById("test").addEventListener("keydown", function(e) { 
 
    // For pretty output in the demo 
 
    var locations = {"1": "Left", "2": "Right"}; 
 
    var keys = {"17": "Ctrl", "18": "Alt"}; 
 

 
    // Checking e.keyCode and e.location 
 
    document.getElementById("test").value = 
 
     "Key: " + (keys[e.keyCode] || e.keyCode) + 
 
     ", Location: " + (locations[e.location] || e.location); 
 

 
    e.preventDefault(); 
 
}); 
 
document.getElementById("test").focus();
<input id="test" type="text" style="width: 100%;" value="Click here and test alt, ctrl and altgr"/>

+0

那麼,它仍然不適合我的使用情況。做一個ctrlL + altL + 會給你的位置= 0。同樣,做一個AltGr + 也會給你的位置= 0.我將如何區分這種情況? – pranavk

+1

ofcourse我可以檢測到先前的ctrl或alt的調用,並使用位置屬性來檢查左或右ctrl/alt被按下 – pranavk

+0

這就是我正在建議,因爲我不認爲有一種便攜式的方式將它們檢測爲修飾鍵。我知道有些事情只能在(舊?)IE中使用,其他方式會在Linux上產生比Windows等不同的結果......實際上,在Windows中,在大多數情況下,甚至可以使用Ctrl + Alt +和使用AltGr +的東西一樣(這是因爲當時鍵盤沒有AltGr),例如我可以使用Ctrl + Alt +ß在我的德語鍵盤上獲得'\'。 – CherryDT