0

ユーザーがログインしているかどうかを示す関数を作成しようとしています。この関数は、ユーザーがサイトを離れたときにデータベースに変更を加える必要があります。これは私の現在のコードです。

$(window).bind('beforeunload', function(){
$.ajax({
        url: "change_to_logged_out.php",
        success: function(data){
            alert(data)
         }
      });
});

ユーザーがページをリロードするときにコードは実行されません。これは私が望むものですが、誰かがタブまたはウィンドウを閉じるときにも実行されます。これも良いことです。しかし、ユーザーが私のサイトの別のページにリダイレクトするリンクをクリックするだけで、コードが実行されます。ユーザーがサイト上の別の場所へのリンクをクリックした場合に関数が無視するようにするにはどうすればよいですか。ただし、ユーザーが別のサイトにリダイレクトされた場合は無視されません。たぶん、このような関数を作成するためのより良い方法がありますか?

前もって感謝します

4

1 に答える 1

2

外部セレクターはここから取得されました:http://james.padolsey.com/javascript/extending-jquerys-selector-capabilities/

$.expr[":"].external = function(el){
   if(!el.href) {return false;}
   return el.hostname && el.hostname !== window.location.hostname;
};
var clicked = 0;
$(window).bind('beforeunload', function(){
!clicked && $.ajax({
        url: "change_to_logged_out.php",
        success: function(data){
            alert(data)
         }
      });
});
$(document).on('click', 'a:external', function(){clicked = 1;});
于 2012-11-19T17:38:16.387 に答える