При входе пользователя проверьте другие вкладки, имеющие тот же веб-сайт, и перезагрузите эти вкладки

#javascript #browser #gwt #tabs #reload

#javascript #браузер #gwt #вкладки #перезагрузите

Вопрос:

Если страница входа открыта на двух вкладках, и пользователь входит в систему на первой вкладке. Мне нужно идентифицировать другую вкладку со страницей входа и изменить ее.

Я пытался писать различные типы javascript, но не знаю, как писать в gwt. Не удается найти какое-либо возможное решение. У меня есть одно решение, чтобы получить текущую вкладку и изменить ее. Но не могу определить, как я могу получить все вкладки и их URL.

 public static native void forceReload() /*-{
      $wnd.location.reload(true);
    }-*/;
 

Ответ №1:

Вы не можете знать, какие другие вкладки открыты на той же странице / сайте, но вы можете общаться между ними.

Вы можете периодически (с помощью таймера) проверять наличие данного файла cookie или прослушивать изменения в sessionStorage (устанавливая значение на вкладке, на которой произошел вход в систему). Вы также можете проверить с помощью сервера, используя опрос, длительный опрос, события на стороне сервера или websocket.

Комментарии:

1. Привет, Томас, в gwt невозможно получить доступ к веб-браузеру и получить все вкладки с их URL? а также спасибо за ваш ответ, но для меня это небольшое продвижение, если возможно, не могли бы вы поделиться каким-либо примером gwt, связанным с ним. спасибо за помощь.

2. В браузере (в JS, а GWT компилируется до JS) невозможно получить доступ к вкладкам и их URL-адресам (если вы не являетесь расширением браузера). Для sessionStorage взгляните на developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API /… , и использовать его через javadoc.io/doc/com.google.elemental2/elemental2-webstorage /… и static.javadoc.io/com.google.elemental2/elemental2-dom /…

3. Здесь приведен пример взаимодействия между вкладками в GWT с использованием веб-хранилища github.com/ibaca/intercomm-gwt/blob/master/src/main/java /…