4

そうですね、まずはこれを出しましょう。はい、コンテキスト メニューを非表示にします。いいえ、誰かが私のページからコンテンツを持ち出すのを防ごうとしているわけではありません。その使用目的は、ブラウザー内ゲームの入力であり、Web ページの特定の領域に限定されます。

イデオロギーから技術へ...

var mouse_input = function (evt) {
    // ...
    return false;
}

document.onmousedown = mouse_input; // successful at preventing the menu.
document.addEventListener('mousedown', mouse_input, true); // unsuccessful

addEventListenerバージョンがコンテキストメニューの起動を停止できない理由を誰か説明してもらえますか? SafariWeb Inspectorで確認できた唯一の違いdocument.onmousedownは、isAttribute値が true であるのに対し、addEventListenerバージョンには false と同じ値があったことです。

4

2 に答える 2

4

それで、私の実りのない探求は突然実を結びました。

var mouse_input = function (evt) {
    evt.preventDefault();
}

document.addEventListener('contextmenu', mouse_input, false);

Safari 、FirefoxOperaで動作します。通常の動作を停止します。Safariに対応するためにリッスンするイベントを変更する必要がありましたが、とにかくより論理的です。詳細情報: EventListenerを実装する関数は値を返すべきではないため、効果がありませんでした。preventDefault()return false

于 2010-08-11T20:11:58.130 に答える
4

違いを説明するには..element.onmousedown = somefunction;絶対的な割り当てです。要素のイベント ハンドラーを置き換えています。element.addEventListener(...)名前が示すように、イベントに既にアタッチされているハンドラーに加えて、ハンドラーを追加します。

于 2010-08-11T21:18:35.513 に答える