2

(私の知る限り)右クリックでイベントが発生すると、マウスダウンイベントが発生しますが、ほとんどの場合、そのマウスダウンは無視されるようです。現在、右クリックでカスタム コンテキスト メニューを表示する作業を行っていますが、右クリック中にリストからオプションを選択できるようにしたいと考えています。現時点では、 onmousedown 属性に関連付けられた JavaScript を実行するのに十分な両方のボタンからのクリックを認識していますが、マウスダウンが右ボタンから来たときにマウスが上にあるオプションを選択するには十分ではありません。

右クリックのマウスダウン イベントを無視するブラウザのデフォルトの動作をバイパスする方法、またはマウスダウンが左ボタンによって生成されたと思わせる方法はありますか?

前もって感謝します。

4

2 に答える 2

0

イベントをご利用いただけますoncontextmenu

編集:マウスの右クリック中のデフォルトのクリック動作をシミュレートする<option>には、右クリックを処理するときにこのコードをイベントハンドラーに配置します。

clickedOption.parentNode.selectedIndex = clickedOption.index;
于 2011-08-08T21:09:03.770 に答える
-1

jQueryを使用する場合は、単純に mousedown を使用できます。

$(document).bind('contextmenu', function(event) 
{
   // on right click
   if (event.which == 3)
   {
      // prevent right click from being interpreted by the browser:
      event.preventDefault(); 

      $(document).mousedown(); // simulate left click
   }
});

もちろん、フィッティング セレクターを使用することもできます。右クリックは、Web サイトの特定の要素の左クリックとしてのみ機能するため、これは素晴らしいことです。そうすれば、ほとんどの場合、期待どおりにマウスを使用することができます (セレクターによって異なります)。

編集:より良い例

<html>
<head>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
  <script>
    $(document).ready(function() {
      $("#rightclick").bind('contextmenu', function(event) {

         // on right click
         if (event.which == 3)
         {
            // prevent right click from being interpreted by the browser:
            event.preventDefault(); 
            $(this).click(); // simulate left click
         }
      });

      $('#rightclick').click(function() {
        $(this).html("i have been clicked!");
      });
    });
  </script>
</head>
<body>
  <p>This is a web page.</p>

  <div id="rightclick" style="width:200px; height:100px; background-color: orange">
    Click me with the right or left mouse button. Both will work!
  </div>
</body>
</html>
于 2011-08-08T21:03:50.777 に答える