ユーザーが入力フィールドを右クリックしたときにデフォルトのcontextMenuを無効にして、カスタムのcontextMenuを表示できるようにします。一般的に、次のような操作を行うと、右クリックメニューを無効にするのは非常に簡単です。
$([whatever]).bind("click", function(e) { e.preventDefault(); });
実際、FFの入力フィールドを除いて、ほぼすべての要素でこれを行うことができます-誰かが理由を知っているか、いくつかのドキュメントに私を向けることができますか?
これが私が使っている関連コードです、みんなありがとう。
HTML:
<script type="text/javascript">
var r = new RightClickTool();
</script>
<div id="main">
<input type="text" class="listen rightClick" value="0" />
</div>
JS:
function RightClickTool(){
var _this = this;
var _items = ".rightClick";
$(document).ready(function() { _this.init(); });
this.init = function() {
_this.setListeners();
}
this.setListeners = function() {
$(_items).click(function(e) {
var webKit = !$.browser.msie && e.button == 0;
var ie = $.browser.msie && e.button == 1;
if(webKit||ie)
{
// Left mouse...do something()
} else if(e.button == 2) {
e.preventDefault();
// Right mouse...do something else();
}
});
}
} // Ends Class
編集:
申し訳ありませんが、コメントを読んだ後、私はいくつかのことを明確にする必要があることに気付きました。
1)上記のコードは機能します...ある意味で。コードはどのボタンがクリックされたかを並べ替えることができます。e.preventDefault()と言ってもかまいませんが、右クリックメニューがポップアップします。言い換えれば、e.buttonにアラートを設定すると、左が1または0、右が2になります...しかし、それは私を笑わせ、それでもひどいデフォルトメニューを表示します!
2)jQueryセレクターを(入力以外の)他の要素に配置すると、すべてが機能し、FFはpreventDefault()呼び出しを尊重し、デフォルトの右クリックメニューは表示されません。