1

いくつかのWebページでマウス座標を取得して保存します。

$("div#container").mousemove( function(e) {
      client_x = e.pageX;
  client_y = e.pageY;

  // save x,y

});

今度は他の人が同じページをロードし、同じ座標(x、x位置)を表示したいと思います。

div#containerがブラウザの位置と同じ位置にないことを考慮しなければならない場合(画面の解像度とスクロールを考慮して)、どうすれば同じポイントを取得できますか?

4

3 に答える 3

6

$.offset().top親のdivコンテナのとを使用し$.offset().leftて、それとマウスカーソルの現在のX座標とY座標との差を計算します。

.offset()要素の親ではなく、常にドキュメントを参照します。

例えば:

$('#element').mousemove(function(e){
    var client_x = e.pageX;
    var client_y = e.pageY;
    var elementOffset = $(this).offset();
    client_x -= elementOffset.left;
    client_y -= elementOffset.top;

    // save x, y.
});

次に、他のユーザーのディスプレイに、オフセットに追加した後の座標を表示します。

于 2012-08-27T13:12:48.950 に答える
0

質問で言及した変数のため、これは不可能のようです。画面の解像度が主な理由ですが、ウィンドウの大きさにも依存します。最初は、示されているように、固定点に対するマウスの位置を計算できると思うかもしれませんdiv(たとえば、サイトのメインコンテナがブラウザウィンドウでサイズ変更されない場合のStack Overflowを考えてみてください)。しかし、彼らのウィンドウがコンテナよりも小さい場合、あなたは彼らが見るものについていくつかの誤った仮定をしているでしょう。

そうは言っても、画面上にあることがわかっている固定要素に対するマウスの位置をいつでも計算でき$.offset()、画面にすべてが表示され(または$(window)サイズがチェックされ)、「通常の」表示条件を使用していると想定できます。

于 2012-08-27T13:14:48.390 に答える
0

offset()次の例では、によって返される値を使用できます。

$("div#container").offset().left$("div#container").offset().top

それらをe.pageXとに差し引くe.pageY

offset()関数は、ドキュメントに対する一致した要素の位置を提供するため(ドキュメントを参照、ユーザーが下にスクロールしても問題はありません。

例: http: //jsfiddle.net/3jMRS/

于 2012-08-27T13:15:24.703 に答える