如何区分浏览器选项卡并刷新功能。
截至目前,窗口刷新和关闭事件没有不同的事件。
我的要求是检查已登录或未登录任何标签的天气用户,以便我不允许他在任何其他标签中加载我的应用程序。
在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
};
上述事件正在触发事件刷新和关闭..有任何方法可以区分。
答案 0 :(得分:3)
区分浏览器选项卡关闭和refresh
功能真的很痛苦,因为我们没有两个事件来知道被触发的事件。
但总有一些要求:)
我正在做的是在on-load中设置一个cookie
,如果找到cookie
并在浏览器关闭事件中删除cookie,则使标志为true。
因此,除非他关闭了活动标签(登录标签),否则该cookie仍在那里,如果他试图在另一个标签中打开,那么已经激活的对话框就会出现。
注意:在Cookies.
在
以下是GWT的onModule()/ onload/document.ready()
的{{1}}。
java script/Jquery
请告诉我如果您在此发现任何错误或循环漏洞,那么我应该留意他们。
我会很高兴,如果有人提供解决方案,而不使用 @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");
}
}
});
}
。