我的目标是捕获我网站上的所有点击事件,检查用户是否仍然登录,然后让他们根据决定他们当前登录状态的 ajax 调用的结果继续或取消他们请求的操作。
我这样做是因为用户经常打开窗口并进行多项选择,运行报告并打开内部选项卡......允许超时的默认行为导致用户丢失他们的工作。
所以,第一步:(拦截所有点击事件)
$(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 调用之前完成,但我并不肯定这就是问题所在。
任何帮助将不胜感激......谢谢!