4

訪問者がページを離れるときにダイアログをポップアップする jQuery イベントを作成しました。マウスの位置を検出するために e.pageY を使用しています。マウスが Y: 2 未満の位置にある場合、ダイアログがポップアップします。問題は、ページを下にスクロールしてページを離れることにしたときに、マウスが Y: 2 未満にないため、ポップアップが表示されないことです。どうすれば修正できますか。つまり、ページを離れてアドレス バーにカーソルを合わせると、下にスクロールしてもポップアップが表示されます。

ここに私のコードと下の実際の例があります。

var mouseLastYPos = null;
$(document).mousemove(function(e){ 
    if(mouseLastYPos){ 
        if (e.pageY < mouseLastYPos && e.pageY <= 2){

           $('#mystuff').show();

        }
    }
    mouseLastYPos = e.pageY;
});​

作業例: http://jsfiddle.net/bmHbt/

4

7 に答える 7

11

古い質問ですが、コードも共有する必要があると思います。誰かが役に立つと思うかもしれません。

$(function(){
    var mouseY = 0;
    var topValue = 0;
    window.addEventListener("mouseout",function(e){
        mouseY = e.clientY;
        if(mouseY<topValue) {
            alert("Do something here!!!");
        }
    },
    false);
});

JSFIDDLE リンク

于 2016-03-28T13:20:17.697 に答える
5

これが私の実装です: http://jsfiddle.net/fq8HT/

また、最後に mousemove がトリガーされたときとの差を含めることで、マウスを非常に速く動かしている人を考慮しようとします。

(function() {

  var current_scroll = 0;
  var last_mouse_y = null;

  $(document)
    .scroll(function() {
      current_scroll = $(this).scrollTop();
    })
    .mousemove(function(e) {
      var speed = last_mouse_y - e.pageY;
      var success_val = e.pageY - speed;

      if (success_val < last_mouse_y && success_val <= current_scroll) {
        $('#stop-leaving').show();
      } else {
        $('#stop-leaving').hide();
      }

      last_mouse_y = e.pageY;
    });

})();
于 2013-04-25T17:00:30.047 に答える
1

マウスがドキュメントから離れたことを確実に知る方法はないと思います。マウスを十分速く動かすと、何も表示されなくなります。

于 2012-04-27T21:43:28.210 に答える
1

これがいつ効果的な機能になるかはわかりません。とにかく、ページのスクロール位置を他の変数と組み合わせて追跡する必要があるでしょうが、そこからブラウザウィンドウの上部がどこにあるかを検出し、それをより適切に機能させることができるはずです.

于 2012-04-27T21:08:50.373 に答える
0

私はこれができることを知っています。これが実際のデモです: http://modules.xcart-service.com/?target=exit_offers_demo

これは OP のすべての要件を満たしています。下にスクロールしても同じように動作します。それが実際にどのように達成されるかについて誰かが光を当てることができれば素晴らしいでしょう....

于 2014-11-07T22:29:42.193 に答える