1

「menukey」と呼ばれるキーボードキーから「contextmenu」を無効にしたいと考えています。キーコードは93です。

ここに画像の説明を入力

<script type="text/javascript">
document.onkeydown = function (e) {
    if (e.which == 93) {
        return false;
    }
}
</script>

上記のコードをいくつかのブラウザ アプリケーションでテストしました。

✔IE10

✔ ファイアフォックス 22

✔ オペラ 12.16

✘ クローム 28.0.1500.95

? サファリxx

✔ 成功 | ✘ 機能しません | ? 未検証

修正できる人はいますか?クロムで動作しないのはなぜですか?

4

3 に答える 3

3

使用している方法が機能しない理由はわかりませんが、代わりにこれを実行できます。

window.oncontextmenu = function(event) {
    return false;
};
于 2013-08-03T05:46:18.853 に答える
2

あなたは出来る

  1. キーが押された場合にフラグを作成する
  2. 「キーダウン」EventListener を追加する
    • ユーザーが contextmenu キーを押したかどうかを保存し、
  3. 「contextmenu」EventListener を追加する
    • キーが押された場合
    • デフォルトのアクションを防止する
    • フラグを false に設定します

var keypressed = false;
window.addEventListener ("keydown",function (e) { 
   if (e.keyCode === 93) keypressed = true;
});

window.addEventListener ("contextmenu",function (e) {
    if (keypressed) {
         e.preventDefault(e);
         keypressed = false;
    }
})

アイデアは、タイトルが示すように、押されたキーでのみコンテキストメニューを非表示にすることですが、マウスクリックなどでは引き続き許可します.

完全に無効にしたい場合は、代わりに @nnnnnn の回答を参照してください =)

Heres a Fiddle は Chrome 29 でのみテストされています

于 2013-08-03T05:47:06.273 に答える
0

タブなしのフル キーボードを無効にします。

document.onkeydown = function (e) {
    if (e.which == 9) {
        return true;
    }
    else{
       return false;
    }
};
于 2014-04-08T11:25:57.390 に答える