1

私は自分のブログにこの調整を使用しようとしています: http://www.tonylea.com/2011/creating-a-jquery-exit-popup/#comment-909

基本的には、マウスがページから上に移動しているときにのみポップアップが表示されるようにすることです。

コードは次のとおりです。

<script type="text/javascript">

    var oldPosition = -1;
    $(document).ready(function() {
        $(document).mousemove(function(e) {
            $('#exitpopup').css('left', (window.innerWidth/2 - $('#exitpopup').width()/2));
            $('#exitpopup').css('top', (window.innerHeight/2 - $('#exitpopup').height()/2));

            var position = e.pageY - $(window).scrollTop();
            if(position < 10){
                if(oldPosition != -1){
                    if(position < oldPosition){
                        // Show the exit popup
                        // make sure it's moving upward
                            $('#exitpopup_bg').fadeIn();
                            $('#exitpopup').fadeIn();

                    }
                    oldPosition = position;
                }else{
                    oldPosition = position;
                }
            }
            // $('#divData').html(oldPosition + " : " + position);
        });

        $('#exitpopup_bg').click(function(){
            $('#exitpopup_bg').fadeOut();
            $('#exitpopup').slideUp();
        });
    });
</script>

問題 1:コードに問題はないと思いますが、マウスをページ内に移動するとポップアップも表示されます。これはなぜですか?

問題 2:マウスをページの外にすばやくドラッグすると、何も表示されません。さて、この状況下でも機能することを確認するにはどうすればよいですか?

4

2 に答える 2

0

スクリプトの問題の一部はoldPosition、10px の範囲内にない場合に -1 にリセットしないことです。

それらがブラウザの外にある場合はoldPosition、値に設定されます。oldPositionここで、マウスをブラウザーから離し (右、左、または下)、上から下にドラッグして戻します。上に移動していなくても、新しい位置が よりも小さい場合、スクリプトが起動します。

問題 1に対処するには、最初のifステートメントにelseをリセットする を含めoldPositionます。

if(position < 10){
    ...
} else {
    oldPosition = -1;
}

問題 2 は、ブラウザがスクリプトの mousemove イベントをフィードできる速度でのみ機能します。それについてあなたができることはあまりありません。

于 2012-12-25T04:24:52.537 に答える
0

1) このコードは、カーソルがページの上部 10 ピクセルに入った場合に、ユーザーが終了しようとしているかどうかにかかわらず、ポップアップを表示することを示しています。下に移動しても、ページの上位 10 ピクセルに収まるという条件を満たしている場合。

2) マウスをすばやく動かすと、特定のレートで mousemove イベントがトリガーされるため、イベントが発生しない場合があります。そのため、マウスの動きが速すぎると、実際にはイベントがキャプチャされません。できることは何もありません。コンピューター、OS、およびブラウザーがこのレートを決定します。

これに対処するための推奨事項は、onbeforeunloadブラウザイベントを使用して、ユーザーがページにとどまりたいのか、それとも本当にページを離れたいのかを尋ねることです。

ユーザーが Web ページを離れたことを検出する最良の方法は?

于 2012-12-25T04:09:51.320 に答える