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

时间:2013-09-07 06:47:44

标签: java javascript jquery gwt smartgwt

如何区分浏览器选项卡并刷新功能。

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

  

我的要求是检查已登录或未登录任何标签的天气用户,以便我不允许他在任何其他标签中加载我的应用程序。

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
    };

上述事件正在触发事件刷新和关闭..有任何方法可以区分。

1 个答案:

答案 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"); } } }); }