如何澄清 ALT + CTRL 和 ALTGR 按键?
我在这里找到了这个代码作为可能的解决方案,但它不起作用:
if (event.ctrlKey && event.altKey) {
}
此代码适用于 alt + ctr 以及 altGr 。
我的情况是这样的:对于 alt + ctrl + e (例如e,这是无关紧要的)我想要一件事对于 altGr + e 另一个,我该怎么做?
如果有人有任何想法,请告诉我。
答案 0 :(得分:2)
您可以通过location
对象中event
属性的值来检测按下了哪个键(从右键或左键)。如果location属性的值为1(e.location=1
),则按下左键。如果值为2,则按下右键。
我在这里提供了 RightAlter+RightCtrl+<any_valid_key>
var isRightAltKey=false;
var isRightCtrlKey=false;
var validKeys=['a','s','d','f','g']; //keep empty array if no need to check key
document.addEventListener("keydown", function(e) {
if(e.key=="Alt"){
// when right Alter pressed make isRightAltKey true
isRightAltKey= (e.location==2);
}
else if(e.key=="Control"){
// when right Control pressed make isRightCtrlKey true,
//if you need any ctrl key pressed then simply set isRightCtrlKey= true;
isRightCtrlKey= (e.location==2);
}
// checking both right key is pressed already or not?
var isRightKeys= isRightAltKey && isRightCtrlKey;
// validate other keys [optional]
var isValidKey=((typeof validKeys === "undefined") || validKeys.length==0 || validKeys.indexOf(e.key.toLowerCase())>=0);
if (isRightKeys && isValidKey){
document.getElementById("detect_key").innerHTML = "RightAlt + RightCtrl + "+e.key;
}
else
{
document.getElementById("detect_key").innerHTML="";
}
}, false);
document.addEventListener("keyup", function(e) {
if(e.key=="Alt"){
// when right Alter released make isRightAltKey false
isRightAltKey= false;
}
else if(e.key=="Control"){
// when right Control released make isRightCtrlKey false
isRightCtrlKey= false;
}
}, false);
<div id="detect_key"></div>
这里我们必须在按下Ctrl和Alt键时检测键位置(在keydown事件上)。我们必须将它存储在flag变量中并使其成立。当key被释放时(在keyup事件上)必须标记为false。否则这些标志始终为真。在下一键按下它将始终为真
答案 1 :(得分:1)
您可以使用该位置来确定正在按下哪个alt。 为了支持Alt + Ctrl,我们将保存按下的Alt的最后位置。
Location = 1 // Left
Location = 2 // Right
然后,一旦按下Alt和Ctrl,就做你的事。在这个例子中,我们只是在结果div中写入Alt侧。你可以添加&#34; e&#34;压力条件:
if (e.ctrlKey && e.altKey && e.key == "e"){
<强> HTML 强>
<div class="cont">
Click Alt + Ctrl<br /><br />
<div id="res"></div>
</div>
<强>的Javascript 强>
var lastAltLocation;
document.addEventListener("keydown", function(e) {
if (e.key == "Alt"){
lastAltLocation = e.location;
}
if (e.ctrlKey && e.altKey){
if (lastAltLocation == 1){
document.getElementById("res").innerHTML = "Left";
}
if (lastAltLocation == 2){
document.getElementById("res").innerHTML = "Right";
}
}
}, false);
答案 2 :(得分:0)
严格遵守您的问题是两个必要案例的代码:
document.addEventListener ("keydown", function (zEvent) {
if (zEvent.altKey && zEvent.code === "KeyE") {
if(zEvent.ctrlKey) {
//Do Ctrl+Alt+E Stuff Here.
} else {
//Do Alt+E Stuff Here.
}
});
现在打破这里发生的事情。 keydown
允许您检测多个按键。
首先,我们检查是否按下 Alt 和 E 键。如果是,我们继续检查 Ctrl 键是否也处于活动状态,并根据需要采取相应的操作。