none
onmousemoveイベントでのボタンの認識

    質問

  • とても今更な質問にも思いますが。

    IE9のonmousemoveイベントで押されているマウスのボタンを識別するにはどうすれば良いのでしょうか?

    (window.eventを使う方法ではなく)

    以下のようなコードを書いてみましたが、どのボタンを押しても放してもCANVAS上でマウスを動かすと同じ値しか出てきません。どこか間違っていますか?

    <!DOCTYPE html>
    <html>
    <head>
        <script src="</script">http://code.jquery.com/jquery-1.4.2.min.js"></script
     <script>
         $(document).ready(function () {
             document.getElementById("a").textContent = "Ready";
             document.getElementById("darea").onmousemove = function (evt) {
                 document.getElementById("a").textContent = evt.which + " " + evt.button;
             }
         });
     </script>
    </head>
    <body >
          <p id="a" >initializeing...</p>
          <canvas width ="500" height="300" id = "darea"  style="margin:0; padding:0">Canvas not supported</canvas>
    </body>
    </html>

    2012年2月19日 8:59

回答

  • 確かに分からないですね。。。
    お絵かきやD&D用途ですよね?私はmousedown時にグローバルのフラグを立てるタイプしか見たことがないです。。

    window.eventだと得られるmousemove中の左ボタン押下情報が、jqueryのイベントオブジェクトだと得られないのですね。
    最新版(1.7.1)でも同じ動作になっているようですね。canvas配下かどうかは関係しないように思えました。

    以下を見ると識別できなくてもおかしくない気がします。
    http://www.w3.org/TR/DOM-Level-3-Events/#event-type-mousemove

    MouseEvent.button: 0
    MouseEvent.buttons: value based on all buttons current depressed, 0 if no buttons pressed

    ↑と↓を見て、buttonsなら取れそうと思いましたが、それもダメでした。
    http://msdn.microsoft.com/en-us/library/ff974878.aspx

    • 回答としてマーク autumn009MVP 2012年2月21日 7:04
    2012年2月20日 17:01

すべての返信

  • 確かに分からないですね。。。
    お絵かきやD&D用途ですよね?私はmousedown時にグローバルのフラグを立てるタイプしか見たことがないです。。

    window.eventだと得られるmousemove中の左ボタン押下情報が、jqueryのイベントオブジェクトだと得られないのですね。
    最新版(1.7.1)でも同じ動作になっているようですね。canvas配下かどうかは関係しないように思えました。

    以下を見ると識別できなくてもおかしくない気がします。
    http://www.w3.org/TR/DOM-Level-3-Events/#event-type-mousemove

    MouseEvent.button: 0
    MouseEvent.buttons: value based on all buttons current depressed, 0 if no buttons pressed

    ↑と↓を見て、buttonsなら取れそうと思いましたが、それもダメでした。
    http://msdn.microsoft.com/en-us/library/ff974878.aspx

    • 回答としてマーク autumn009MVP 2012年2月21日 7:04
    2012年2月20日 17:01
  • やはり無理っぽいですね。

    mousedown時に記録する方法でやってみます。

    ありがとうございます。

    2012年2月21日 7:04