0

のコンテキストメニューを無効にするこのコードがありますdiv

    disableContextMenu = function (e){ 
        if(e.stopPropagation)
            e.stopPropagation();
        if(e.preventDefault)
            e.preventDefault();
        e.cancelBubble = true;
        return false;
    };
    clickedElement.oncontextmenu = disableContextMenu;
    if(clickedElement.addEventListener){
        clickedElement.addEventListener('contextmenu', disableContextMenu, false);
    }else if(clickedElement.attachEvent){
        clickedElement.attachEvent('oncontextmenu', disableContextMenu);
    }

これは期待どおりに機能します。しかし、マウスアップハンドラーを追加すると、コンテキストメニューが再び表示されます。

        clickedElement.onmousedown = function (e){
        if(e.which == 3){
            if(e.stopPropagation)
                e.stopPropagation();
            if(e.preventDefault)
                e.preventDefault();
            elementToShow.style.position = 'absolute';
            elementToShow.style.left = e.pageX + 'px';
            elementToShow.style.top = e.pageY + 'px';
            elementToShow.style.display = 'block';
            return false;
        }
    }

これは私のIE9では機能しません。代わりにドキュメントを使用しましたが、機能しますが、テキストボックスやその他の要素のコンテキストメニューを無効にしたくありません。どうやってやるの?

これを使用しないように私に提案しないでください。これはクライアント向けのプロジェクトであり、これは要件です。

4

1 に答える 1

1

イベントのターゲットも確認​​し、そのターゲットが必要のないオブジェクトである場合にのみ、コンテキスト メニューを無効にすることができます。

于 2012-12-14T02:09:52.730 に答える