0

キーが押されたときにリダイレクトするための次のコードがあります。

$('body').bind('keyup', function(event) {
    if (event.keyCode == 66) { 
        window.location = "page.php"; 
    }
});

私はこれを持っていますが、約10の異なるキーについて繰り返しました。

私の質問は、ユーザーがマウスで強調表示されたテキストを持っている場合、たとえば、ユーザーがCTRL+CまたはCTRL+でコピーまたは貼り付けている場合、どうすれば適用できないようにすることができますかP

4

2 に答える 2

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';
});
于 2013-01-30T16:15:08.010 に答える
0

明らかisKeyDown()に、 JSには機能がありません。とはいえ、これはあなたのニーズに合うはずです:

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を知る必要があるかもしれません。

于 2013-01-30T16:35:17.433 に答える