gpt4 book ai didi

javascript - 使用 jquery/Javascript 在浏览器关闭或选项卡关闭时执行注销

转载 作者:行者123 更新时间:2023-11-29 15:29:06 24 4
gpt4 key购买 nike

我需要在浏览器关闭或选项卡关闭时注销用户。我试过使用下面的代码,除了以下内容外,它工作正常:1.) 当我点击浏览器刷新按钮时,它仍然注销2.) 当我在浏览器中更改 URL 并按回车键时,它仍然注销以上两种都是不可取的,我想防止。谁能建议怎么做?这是我的脚本:

var validNavigation = false;

function wireUpEvents() {

window.onbeforeunload = function(e) {
if (!validNavigation) {
endSession();
}
}

//Hits the server and invalidates the session
function endSession() {
$.ajax({
url : "performLogout..",
type : "GET",
async: false,
success : function(response) {},
error: function(response) {}
});
}


//On click of F5
document.onkeydown = function disableKeys() {
if( typeof event != 'undefined' ) {
if(event.keyCode == 116) {
validNavigation = true;
event.keyCode = 0;
//return false; //return false if u want to disable refresh
}
}
};

// Attach the event click for all links in the page
$("a").on("click", function() {
validNavigation = true;
});

// Attach the event submit for all forms in the page
$("form").on("submit", function() {
validNavigation = true;
});

// Attach the event click for all inputs in the page
$("input[type=submit]").on("click", function() {
validNavigation = true;
});

$("select#select-id").on("change", function() {
validNavigation = true;
});

}

// Wire up the events as soon as the DOM tree is ready
$(document).ready(function() {
wireUpEvents();
});

谢谢

最佳答案

对于第 2 种情况,无法区分用户关闭选项卡和用户键入新的 URL 以前往。我的问题是,如果他们在他们的地址栏中键入 google.com 与他们关闭标签页并导航具有相同的效果,您为什么不注销他们?您是否考虑过他们登录后在您的站点上打开一个新选项卡,然后关闭该选项卡。原始选项卡仍处于打开状态,但您想将其注销?在假设用户的意图之前考虑边缘情况。

对于您的场景,如果每个 session 只有一个选项卡,您可能需要查看 SessionStorage它仅在浏览器窗口关闭之前在本地保存信息。所有新标签页都将是 session 的实例。

也许一个好的方法是在用户离开页面时将 session 标记为暂停,而不管在什么情况下,然后在加载新页面时恢复他们的 session 。在此环境中,您需要在服务器上实现简单的垃圾收集以丢弃旧 session 。

总而言之,除非您 100% 确定用户已完成,否则不要注销用户。为您付出更多的努力几乎总是值得获得更好的用户体验。否则您将失去有值(value)的用户。

关于javascript - 使用 jquery/Javascript 在浏览器关闭或选项卡关闭时执行注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36526399/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com