Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 08.02.2019, 12:20
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

<div class="hello" style="display:none" id="welcome-window">
	<div class="hellotext">
		<div align="center" class="logo">
			<img src="/logo.png" alt="" />
			Добро пожаловать!
		</div>
	</div>
</div>
<script>
(function(){
	var win = document.getElementById("welcome-window");
	if(win && "visited" in sessionStorage === false) {
		win.style.display = "block";
		sessionStorage.visited = true;
	}
})();
</script>
Ответить с цитированием
  #12 (permalink)  
Старый 08.02.2019, 12:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Malleys,
Ответить с цитированием
  #13 (permalink)  
Старый 08.02.2019, 13:15
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

Если как у Malleys, если открыть в другом табе, приветствие будут отображено в каждом табе... и чтобы от этого избавиться надо завязываться на сессию php, или делать финт ушами ) через service workers + localStorage на стороне клиента... но можно и так, если не платить денег %)
Ответить с цитированием
  #14 (permalink)  
Старый 08.02.2019, 13:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

SuperZen,
спасибо за уточнение!
Ответить с цитированием
  #15 (permalink)  
Старый 08.02.2019, 13:41
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

рони, не за что, в общем сессия php живет до закрытия браузера, sessionStorage живет до закрытия таба... надо хранить кол-во открытых табов, те при загрузке в localStorage сделать tab + 1, при закрытии таба делать tab -1, и если tab = 0 или пусто, то показываем приветствие... но тут появляется другая проблема, с точки перфекционизма, что будет если закрыть браузер, и потом его открыть, что показывать в открытых табах... только в одном табе показывать приветствие или во всех... задача из серии сделать "Remember Me" на "Login" странице, на стороне клиента...
Ответить с цитированием
  #16 (permalink)  
Старый 08.02.2019, 16:02
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

Сообщение от Malleys Посмотреть сообщение
Было бы странно, если бы оно не отобразилось. А то какой-смысл открывать новую вкладку, если в ней всё восстановится, что уже есть в открытой вкладке.
Здесь не про то, что там что-то надо восстановить, а то что sessionStorage работает только для одного таба... И чтобы показывать приветствие только для первого открытого таба, и чтобы не показывать приветствие в других табах, если его показали для первого таба... да, таких условий не было озвучено, и возможно потому что это не явно ясно, видим сессию и все понеслась душа в рай...
Ответить с цитированием
  #17 (permalink)  
Старый 08.02.2019, 16:48
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от SuperZen
если открыть в другом табе, приветствие будут отображено в каждом табе...
Было бы странно, если бы оно не отобразилось. А то какой-смысл открывать новую вкладку, если в ней всё восстановится, что уже есть в открытой вкладке.

Для сайта без регистрации/привязки к человеку это идеальное решение, а так оно должно показываться в зависимости от активности пользователя, т. е. посмотрел на компьютере, ему показали приветствие, потом решил смотреть на телефоне, ему приветствие уже не показывается, т. к. пару минут назад его приветствовали на компьютере.

UPD

Сообщение от SuperZen
видим сессию и все
Сообщение от SuperZen
sessionStorage работает только для одного таба
Ведь вы можете учитывать, откуда появилась вкладка... Если пользователи нашли на странице ссылку и в контекстном меню выбрали открыть в новой вкладке или нажали на вкладке дублировать, то тогда приветствие не нужно, а если отдельно ввели адрес в новой вкладке, то тогда нужно! Если вы позволяете такое мнение, то можно посмотреть на document.referrer

<div class="hello" style="display:none" id="welcome-window">
	<div class="hellotext">
		<div align="center" class="logo">
			<img src="/logo.png" alt="" />
			Добро пожаловать!
		</div>
	</div>
</div>
<script>
(function(){
	var win = document.getElementById("welcome-window");
	if(
		win && "visited" in sessionStorage === false &&
		new URL(document.referrer, "file:///").host !== location.host
	) {
		win.style.display = "block";
		sessionStorage.visited = true;
	}
})();
</script>

<a href="?test">Link</a>

Последний раз редактировалось Malleys, 08.02.2019 в 16:52. Причина: Пример нужно запускать на реальном сервере... 😉
Ответить с цитированием
  #18 (permalink)  
Старый 09.02.2019, 11:19
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Ну теперь бабосов точно не увидим...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Модальное окно. Salvat Элементы интерфейса 4 25.02.2016 09:33
Как передать переменную в модальное окно sinsir jQuery 24 20.06.2013 16:59
окно поверх таблицы qwertycal Общие вопросы Javascript 2 20.02.2013 13:15
Как закрыть дочерние окно из родительского при помощи переключателя checkbox?? dieseln Общие вопросы Javascript 4 15.12.2010 16:30
Как узнать свернуто окно браузера или нет. bar-boss Events/DOM/Window 3 25.09.2008 16:09