• ベストアンサー

ブラウザの外にあるマウスの情報を取得する方法

例えば、googlemap だとDrag&Drop で地図をぐりぐりと動かすことが出来るのですが、その際にカーソルがブラウザの外に行っても地図はぐりぐりと動き続けますし、マウスボタンを離せばそれも認識して地図のスクロールは止まります。 つまり、ブラウザ外のマウスの座標とボタンイベントが取得できているのだと思いますが、これは当たり前のようでいて当たり前には出来ません。 ソースは読んでみましたが挫折しました。 どなたかこの技法について分かる方いらっしゃいましたら教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • X-trail_00
  • ベストアンサー率30% (438/1430)
回答No.1

ブラウザ内でドラッグが始まった場合に限り ブラウザ外に行っても追っかけることが出来るようです。 下記のHTMLファイルを作成すると検証できます。 ページ内でクリックするとテキストボックスにX、Yの座標が表示されます ブラウザを小さくしてページ内でドラッグして ページ外でドロップするとページ外のXY座標が表示されます。 ページ外でドラッグ始めてページ内に来ても無反応です。 グーグルマップはonclickイベントのみでやっているようです。 <div>内にdivのサイズより大きいマップのimageを置いて マウスのオンクリックのポイントが基準位置から向かった方向の imageをAjaxの機能を利用してDLしているようです。 私も勉強中ですが・・・。 <html> <head><title> </title> </head> <body onclick='catchmouse();'> <form name="form1"> <input type='text' name='mX' value=''> <input type='text' name='mY' value=''> </form> </body> <script language="javascript"> <!-- function catchmouse() { form1.mX.value = event.x; form1.mY.value = event.y; } </script> </html>

svankmajer
質問者

お礼

ご回答ありがとうございました。 ドラッグアンドドロップ中にしか反応しないというのが 参考になりました。というか、そこの部分がスコーンと抜けた状態でこれまでずっと悩んできました。 サンプルソースはbodyタグを以下のようにして楽しませていただきました。 <body onclick='catchmouse();'onmousemove='catchmouse();'>

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#22259
noname#22259
回答No.2

- -untested- - obj.getPos = function(pnt){ obj.x = pnt.pageX ; obj.y = pnt.pageY ;} //.............................................. //.............................................. obj.handle = function(a, b){ if (document.onmouseup != b) var obj2 = document.onmouseup || null; document.onmouseup = b; }else{ var x = (!a)? Event.MOUSEDOWN : (a2)? Event.MOUSEMOVE : Event.MOUSEUP; b? document.captureEvents(pos) : document.releaseEvents(pos); }}

svankmajer
質問者

お礼

ご回答ありがとうございました。 が、私は力量不足でこのコードを使ったテスト環境を構築できませんでした。 <script> var obj = new Object(); obj.getPos = function(pnt){ obj.x = pnt.pageX ; obj.y = pnt.pageY ;} //.............................................. obj.handle = function(a, b){ if (document.onmouseup != b) { var obj2 = document.onmouseup || null; document.onmouseup = b; }else{ var x = (!a)? Event.MOUSEDOWN : (a2)? Event.MOUSEMOVE : Event.MOUSEUP; b? document.captureEvents(pos) : document.releaseEvents(pos); }} obj.handle(1, obj.getPos); // 1の部分は何入れていいのか全然わかってない </script> とやりました。 obj.xとobj.yにはonmouseupのタイミングで値が入ってくる、というところまでできましたが、一生かかっても通らない部分があります。 精進します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • マウスをブラウザの外に出したら、イベント・・・

    マウスをブラウザの外(または<table>の外)に出したら、イベントを発動したい。(alert等) <table onmouseout="javascript:alert('出たよ!')"> とかやると、<table>内の<td>や<tr>から外に出ただけで、イベントが発動してしまいます。 <body onmouseout="javascript:alert('出たよ!')"> これでも同じです。 ブラウザ(または<table>)の外に出た時だけに発動させたいのです。 どうすればよいのでしょうか? ちなみにIEのみの動作で考えてくれれば結構です。 よろしくお願いします。

  • ジョイパッドでマウス位置を指定するツールをご存知ないですか?

    よくベットに寝転んでブラウザゲームをジョイパッドでプレイしているのですが 毎回同じ座標をクリックする時にカーソル移動するのがとても面倒です。(ショップボタンや移動ボタン等) ボタンを押すことによって指定した座標へマウスカーソルを瞬時に移動してくれるツールをご存知無いでしょうか?

  • マウスカーソルがおかしくなった

    Windows7を利用しています いつからかセンターボタンでスクロールするとマウスカーソルがおかしくなり、シャットダウンしたりマウスカーソルを変更しない限り元に戻らなくなります。 スクロールしなければ全く異常はないのですが、一度スクロールすると常にこのカーソルなので正常に戻したいです。 ちなみにネットでダウンロードしたカーソルを適応させたり、Air以外のカーソルを選択してもスクロールするとこのカーソルになってしまいます。 システム的な異常かもしれませんが、といにかく直したいです。 直し方を教えて下さい。

  • JavaScriptでマウス位置をリアルタイムで取得

    ウィンドウを開いたら、マウス位置をリアルタイムで取得し、ウィンドウ上に表示ということをしたいのですが、まったくわかりません。 function mousecursor(evt){ //関数の定義 X = event.x; //イベント発生場所のX座標取得 Y = event.y; //イベント発生場所のY座標取得 window.status = X + "," + Y;} //ステータスバーに表示 document.onmousemove = mousecursor; //マウスカーソルが動いたら、関数を呼び出す。(bodyタグで呼び出しも可) というようなソースを手に入れたのでやってみたら、できることはできたんですが、なんとなくしか意味がわかってません。 HTMLやPerl、VBAなどはできるんですが、どうしてもJavaScriptがあんまり理解できないんです…。 リアルタイムで取得し、表示、ということではなくても、自分の任意したように出力させたいんです。 (たとえばどこかをクリックしたらアラート表示など) よろしくお願いします。

  • マウスカーソルの変更

    ボタンをクリックしてタイマーを起動して1秒後にマウスカーソルを変更するソースを考えています。 ボタンを押した後はマウスを動かしません。 1秒後のタイマーになってから、マウスカーソルを変更する部分のソースを教えてください。

  • NN系でマウス座標取得

    お世話になります。 javascriptにてマウス座標を取得するファンクションを作成したいと 考えております。 そこで以下のソースでも取得可能だと思うのですが NN系でイベントが走らない場合でもマウス座標を 取得するファンクションを作成したいです。 すごく簡単なのかもしれませんが、ご教授宜しくお願い致します。 function getMouseY(e){  if(document.all) return document.body.scrollTop+event.clientY else if(document.layers||document.getElementById) return e.pageY }

  • VB.NETでマウスクリックイベントを発生させたい。

    VB.NETでformの外で任意の座標でマウスクリックイベントを発生させたい。 formにはボタンがあり、そのボタンを押すを固定位置(formの外)でマウスの左クリックイベントを発生させたいのですがどのような手段を使えばいいでしょうか。 環境 Windows XP,VB2008 Exoress

  • マウスのカーソルが思うように動かない!

    ブラウザの画面の最小化のボタンなど、クリックする場所に、マウスでカーソルを動かそうとすると、その近くまでカーソルが行くと、まるでカーソルがそこに行くのを嫌がるように、細かく震えだし、『イヤイヤ』し、マウスの動きと反対の動き(ほんの、2、~3ミリですが・・・)を、しだすときがあるのですがどうしてなんでしょうか?皆さん、このようなご経験ありませんか? 特に、ブラウザを、複数開いているときなど、画面が重いときによくこの症状が発生します。

  • マウスについて

    現在、PowerBookをマウス無しで使っています。別に不自由は無いのですが、マウスが有ってもいいかなとも思うようになりました。マウスの購入も考えたいです。マウスは有った方が便利なのでしょうか?また、どういうマウスがいいですか? 私はWindowsみたいに2ボタンでスクロールも出来るやつ(クルクル回すとブラウザとかがスクロール出来るやつ)がいいのですが、Mac OS X (10.4.2)でも使えますか?それともアップル純正のものの方がいいのでしょうか?宜しくアドバイスお願い致します。

    • ベストアンサー
    • Mac
  • マウスのスクロールボタンが使えなくなった・・・

    つい最近ブラウザをIEからFirefoxに変えました。すると以前使えていた マウスのスクロールボタンが使えなくなってしまいました・・・ スクロールだけならできるのですが、それでは不便なんです。 私はできればIEからFirefoxには戻したくないんです。 なにかマウスを買い換えるとか、ブラウザを変える以外に解決方法がないでしょうか・・・ ちなみに私が使用しているマウスはマイクロソフト製のHID準拠マウスです。