Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   как засечь повторное открытие страницы? (https://javascript.ru/forum/events/61929-kak-zasech-povtornoe-otkrytie-stranicy.html)

Vlasenko Fedor 16.03.2016 22:11

localStorage без проблем изменяем значение и подписываемся на событие изменения значения
также можно решить с помощью workers

Dilettante_Pro 16.03.2016 22:14

Poznakomlus,
Проблема в том, чтобы он изменился при закрытии сессии

Dilettante_Pro 16.03.2016 22:30

Единственный выход - отключить на браузере все управляющие кнопки и завершать сессию кнопкой на странице с изменением localStorage. Но и при этом можно просто выключить компьютер...

greenwar 16.03.2016 22:39

я надеялся, что окну можно присвоить свой ID, как когда target='uniq_id', например
а потом просто смотреть в любой другой вкладке - не заряжен ли он

в общем-то главное - определить, что такая страница уже открыта в соседней вкладке

Vlasenko Fedor 16.03.2016 23:50

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script src="storage.js"></script>
<script>
    var key = _storage('key');
    _storage('key', !key);
    _storage().subscribe('key', function (value, e) {
        if(value){
            _storage('key', !value);
        }else{
            alert('Страница уже открыта');
        }
    });
</script>
</body>
</html>

Скрипт для работы с localStorage и парочка хороших примеров
откройте копии страниц в броузере

greenwar 17.03.2016 00:02

ух ты, работает )
вроде даже без нареканий
спасибо!

Deff 17.03.2016 04:11

Dilettante_Pro,
Для особо тугодумных, Запустите первое окна, затем второе(Что Вы видите ?
<script type="text/javascript">sessionStorage[1]=11111111;</script>


<script type="text/javascript">alert(sessionStorage["1"])</script>


C Одного домена sessionStorage читается на всех вкладках, пока хоть одна открыта

Dilettante_Pro 17.03.2016 07:36

Цитата:

Сообщение от Deff (Сообщение 411211)
Dilettante_Pro,
Для особо тугодумных, Запустите первое окна, затем второе(Что Вы видите ?
<script type="text/javascript">sessionStorage[1]=11111111;</script>


<script type="text/javascript">alert(sessionStorage["1"])</script>


C Одного домена sessionStorage читается на всех вкладках, пока хоть одна открыта

По вашему совету запустил первый пример, затем второй. Увидел единички. Не закрывая первой вкладки, открыл вторую и запустил второй пример. Увидел undefined. Может, стоит думать помедленнее?

Dilettante_Pro 17.03.2016 10:41

Цитата:

Сообщение от greenwar (Сообщение 411207)
ух ты, работает )
вроде даже без нареканий
спасибо!

greenwar,
А что именно работает?
У меня пример Poznakomlus не хотел почему-то работать - выдавал Unexpected token на строку 119 storage.js : JSON.parse(value);
Заменил в примере ключевое слово key на name - и все заработало, действительно, вроде четко отслеживает - в Chrome.
В IE проблемы
В Firefox срабатывает несколько странно. Firefox и Chrome друг друга не видят.

greenwar 17.03.2016 11:33

Цитата:

Сообщение от Dilettante_Pro (Сообщение 411216)
greenwar,
А что именно работает?
У меня пример Poznakomlus не хотел почему-то работать - выдавал Unexpected token на строку 119 storage.js : JSON.parse(value);
Заменил в примере ключевое слово key на name - и все заработало, действительно, вроде четко отслеживает - в Chrome.
В IE проблемы
В Firefox срабатывает несколько странно. Firefox и Chrome друг друга не видят.

у меня ошибок не выдаёт, просто работает
открываешь вторую вкладку - кричит
F5 - кричит
короче реагирует на дубль и ни на что другое, что и требовалось
(смотрю в FF и хроме)

вкладки в разных браузерах пофигу, изначально то в одном будут открывать
мне надо просто уведомление ставить, а не хаки обламывать )


Часовой пояс GMT +3, время: 18:15.