gpt4 book ai didi

java - 区分浏览器选项卡关闭和刷新(以检测应用程序的多个实例)

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:51:03 25 4
gpt4 key购买 nike

如何区分浏览器选项卡关闭和刷新功能。

截至目前,窗口刷新和关闭事件没有不同的事件。

My requirement is to checking weather user already logged in or not in any of tabs,So that I wont allow him to load my app in any other tabs.

GWT (java)

private void registerWindowCloseEvent() {
Window.addCloseHandler(new CloseHandler<Window>() {
@Override
public void onClose(CloseEvent<Window> event) {
// do something on close
}
});

}

JavaScript/Jquery 中:

 window.onbeforeunload = function(e) {
// do something on close
};

以上事件在事件刷新和关闭时都会触发。有什么方法可以区分。

最佳答案

区分浏览器选项卡关闭和刷新功能真的很痛苦,因为我们没有两个事件来知道哪个事件被触发。

但总有一些要求:)

我正在做的是在加载时设置一个 cookie,如果发现 cookie 并在浏览器关闭事件中删除该 cookie,则设置一个标志为真。

因此,除非他关闭 Activity 选项卡(已登录选项卡),否则该 cookie 仍然存在,如果他尝试在另一个选项卡中打开,则会出现已经处于 Activity 状态的对话框。

注意:在 Cookies 的帮助下提供的解决方案。

在这是 GWT 的 onModule()/与 java script/Jqueryonload/document.ready() 相同。

    @Override
public void onModuleLoad() {
if("already_in_browser".
equalsIgnoreCase(Cookies.getCookie("already_in_browser"))){
showAlreadyTabActiveDialog();
return;
}else{
setLoggedincookie();
}

private void setLoggedincookie() {
isLoggedintab = true; //this is a global variable
registerWindowCloseEvent();
com.google.gwt.user.client.Cookies.
setCookie("already_in_browser","already_in_browser");

}

private void showAlreadyTabActiveDialog() {
alert("You are already active in another tab");
registerWindowCloseEvent();
}


/** This event is onbeforeunload in javascript

private void registerWindowCloseEvent() {
Window.addCloseHandler(new CloseHandler<Window>() {
@Override
public void onClose(CloseEvent<Window> event) {
if(isLoggedintab ){
Cookies.removeCookie("already_in_browser");
}
}
});

}

如果您在其中发现任何错误或漏洞,请告诉我。以便我查看它们。

我会很高兴,如果有人提供解决方案,而不使用 cookies

关于java - 区分浏览器选项卡关闭和刷新(以检测应用程序的多个实例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18670598/

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