2

私は自分のページを持っているので、自分のページのコンテキストメニューを無効にしたいです。ただし、テキスト ボックスでは、システムのコンテキスト メニューを使用できる必要があります。

私はそのようなJavascriptでそれをやっています:

document.oncontextmenu = function (e) {
    return false;
};

私は次のようなことを考えました:

document.oncontextmenu = function (e) {
    if (e.taget.nodeName != "text") {
    return false;
    }
};

しかし、nodeName は常に DIV です。このDIVには、テキストボックスがあるJQGridがあります。

<div id="divGrdPos" style="padding:3px,0px,3px,0px;">
    <table id="JQGridCart" class="grdCart"></table>
</div>

誰かが私を助けることができますか?

4

3 に答える 3

4

次のようなものが必要です:

document.addEventListener('contextmenu', function (event) {
    if (event.target.nodeName !== 'INPUT' && event.target.type !== 'text' && event.target.nodeName !== 'TEXTAREA') {
        event.preventDefault();
    }
});

入力 (type="text") とテキストエリアで機能します。

Jsfiddle: http://jsfiddle.net/QjmHy/

于 2012-10-19T07:11:24.620 に答える
0

textテキストボックスをチェックするのはなぜnodeNameですかINPUT

document.oncontextmenu = function (e) {
    console.log(e);
    if (e.target.nodeName != "INPUT") {
        return false;
    }
};​

http://jsfiddle.net/qr3fu/

于 2012-10-19T07:06:45.923 に答える
0

間違いを見つけました。私のコードではmousedown()、グリッドにイベントがあり、このイベントはoncontextmenu()イベントの前に発生します。そして、mousedown()右クリックを確認した後、divを使用して独自のコンテキストメニューを大きくしています。

mousedown()そのため、イベントnodeNameをチェックインして"input"結果を処理しました。

oncontextmenu()同じになります。

あなたのヒントのためのthx。

于 2012-10-19T09:12:20.780 に答える