153

「ソースの表示」などのばかげたことを防ごうとしているわけではありませんが、特定の要素のカスタム コンテキスト メニューをいくつか作成しています。

編集:回答への応答:私はこれを試しました:

<a id="moo" href=''> </a>

<script type="text/javascript">
    var moo = document.getElementById('moo');

    function handler(event) {
        event = event || window.event;

        if (event.stopPropagation)
            event.stopPropagation();

        event.cancelBubble = true;
        return false;
    }

    moo.innerHTML = 'right-click here';

    moo.onclick = handler;
    moo.onmousedown = handler;
    moo.onmouseup = handler;
</script>
4

5 に答える 5

147

ユーザーが右クリックしようとするたびにメッセージで警告することを気にしない場合は、これを body タグに追加してみてください

<body oncontextmenu="return false;">

これにより、コンテキスト メニューへのすべてのアクセスがブロックされます (マウスの右ボタンだけでなく、キーボードからも)。

ただし、右クリック無効化を追加しても意味がありません。基本的なブラウザの知識があれば、誰でもソースを表示して必要な情報を抽出できます。

于 2013-06-07T15:19:51.470 に答える
121

イベントをキャプチャonContextMenuし、イベント ハンドラーで false を返します。

event.buttonいずれにせよ、一部のブラウザでは、クリックイベントをキャプチャして、どのマウスボタンがイベントを発生させたかを確認することもできます。

于 2008-12-19T18:48:34.100 に答える
19

私はこれを使用しました:

document.onkeydown = keyboardDown;
document.onkeyup = keyboardUp;
document.oncontextmenu = function(e){
 var evt = new Object({keyCode:93});
 stopEvent(e);
 keyboardUp(evt);
}
function stopEvent(event){
 if(event.preventDefault != undefined)
  event.preventDefault();
 if(event.stopPropagation != undefined)
  event.stopPropagation();
}
function keyboardDown(e){
 ...
}
function keyboardUp(e){
 ...
}

次に、最後の 2 つの関数で e.keyCode プロパティをキャッチします。e.keyCode == 93 の場合、ユーザーがマウスの右ボタンを離したか、コンテキスト メニュー キーを押したり離したりしたことがわかります。

それが役に立てば幸い。

于 2013-08-17T14:02:48.540 に答える
4

あなたのページが、人々がそのメニューを見ることができないという事実に本当に依存している場合、最新のブラウザー (Firefox など) では、本当にそれを無効にするかどうかをユーザーが決定できることを知っておく必要があります。したがって、メニューが実際に無効になるという保証はまったくありません。

于 2008-12-19T18:59:05.297 に答える
1

ユーザーが非アクティブ化できるため、コンテキスト メニューに依存することはできません。ほとんどの Web サイトは、訪問者を困らせるためにこの機能を使用したいと考えています。

于 2008-12-19T19:01:22.157 に答える