私の目標は、私のWebサイトですべてのクリックイベントをキャプチャし、ユーザーがまだログインしていることを確認してから、現在のログインステータスを決定するajax呼び出しの結果に基づいて、要求されたアクションを続行またはキャンセルできるようにすることです。
これは、ユーザーが複数の選択を行ってレポートを実行し、内部タブを開いた状態でウィンドウを開くことが多いためです...タイムアウトのデフォルトの動作を許可すると、ユーザーは作業を失うことになります。
したがって、ステップ1 :(すべてのクリックイベントをインターセプトする)
$(document).ready(function() {
$(document).click(function(event) { fncCheckLogin(event); });
});
ステップ2:(テストとしてすべてのクリック可能なオブジェクトのイベントをキャンセルします)
function fncCheckLogin(objEvent) { objEvent.preventDefault(); }
ステップ3:(ログインステータスを確認する)
$.ajax({
type:"POST",
url: "myURL",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType:"json",
complete: function(x){
if(x){
if (!isOpen) {
DoSomeStuff
}
);
isOpen = true;
testMe(objEvent);
}
} else {
if (isOpen) {
isOpen = false;
}
}
}
});
ステップ4:(ログインの有効期限が切れている場合のアクションを防止します)
function testMe(objEvent) { if (isOpen) { objEvent.preventDefault(); }}
「isOpen」変数は、ログアウトしたユーザースクリプトが実行されたかどうかを識別するだけです。ajax呼び出しからpreventDefaultに直接アクセスしようとしましたが、テストのために移動しました。
私の問題はタイミングだと思います...ifステートメントの前にステップ4でアラートを出すと、preventDefaultコマンドは機能しますが、そうでない場合は機能しません。ajax呼び出しの前にイベントが完了しているようですが、それが問題であるとは確信していません。
どんな助けでも大歓迎です...ありがとう!