我有这个代码用于在按下某个键时重定向:
$('body').bind('keyup', function(event) {
if (event.keyCode == 66) {
window.location = "page.php";
}
});
我有这个,但重复了大约10个不同的键。
我的问题是,如果用户使用鼠标突出显示文本,如果他是使用 CTRL复制或粘贴 + C ,我该如何使其不适用或 CTRL + P 。
答案 0 :(得分:0)
检查所选文本和密钥:
$('body').on('keyup', function(event) {
var t = '';
if(window.getSelection){
t = window.getSelection();
}else if(document.getSelection){
t = document.getSelection();
}else if(document.selection){
t = document.selection.createRange().text;
}
if ((!t.length) && event.which==66) window.location = 'page.php';
});
答案 1 :(得分:0)
Obviously,JS中没有isKeyDown()
函数。也就是说,这应该适合您的需求:
function noMetakeyPressed(metakeysPressed) {
for (var k in metakeysPressed) {
if (metakeysPressed[k]) {
return false;
}
}
return true;
}
var metakeysPressed = {17: false, 18: false};
$('body')
.bind('keydown', function(event) {
switch(event.keyCode) {
case 17: // Ctrl
case 18: // Alt
metakeysPressed[event.keyCode] = true;
break;
case 66: // B
if (noMetakeyPressed(metakeysPressed)) {
alert("B pressed");
}
break;
}
})
.bind('keyup', function(event) {
if(event.keyCode === 17 || event.keyCode == 18) {
metakeysPressed[event.keyCode] = false;
}
});
你也可以使用一个isMetakeyPressed
布尔变量,但也许你需要知道当前正在按下 metakey 。