Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.11.2016, 23:18
Новичок на форуме
Отправить личное сообщение для vasek123 Посмотреть профиль Найти все сообщения от vasek123
 
Регистрация: 07.10.2016
Сообщений: 7

Работа скрипта только в активной вкладке
Здравствуйте.
Есть небольшой скриптик, который отслеживает изменения в урл и обновляет страницу при изменении


функции setCookie и getCookie соответственно задают и читают куки.
В целом скрипт работает, и выполняет свои задачи на 110%, но как только открывается еще одна вкладка этого сайта, начинается постоянная перезагрузка страницы, что в целом естественно, скрипт отрабатывает как и должен.

Как сделать что бы этот скрипт работал только в активной вкладке ?

Последний раз редактировалось vasek123, 02.11.2016 в 10:24.
Ответить с цитированием
  #2 (permalink)  
Старый 01.11.2016, 23:29
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,588

vasek123, во вкладках у вас должны иметь возможность находиться разные страницы, или при смене активной вкладки адрес новой должен становиться таким же как на той, с которой ушли?
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 01.11.2016, 23:41
Новичок на форуме
Отправить личное сообщение для vasek123 Посмотреть профиль Найти все сообщения от vasek123
 
Регистрация: 07.10.2016
Сообщений: 7

Сообщение от Aetae Посмотреть сообщение
vasek123, во вкладках у вас должны иметь возможность находиться разные страницы, или при смене активной вкладки адрес новой должен становиться таким же как на той, с которой ушли?
во вкладках страницы разные, разные адреса.

Собственно поэтому сейчас и есть проблема, то что страницы начинают перезагружаться по очереди раз в секунду)
Ответить с цитированием
  #4 (permalink)  
Старый 01.11.2016, 23:54
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,588

Нет, я не о том. Если во вкладках нужны разные страницы, то вообще не нужно их запоминать в куки.

По сути если pathname изменилось, то страница какбэ и так перезагружена и никаких дополнительных скриптов не надо.)
Если конечно не использовался history.pushState, но в таком случае и изменять надо кусок кода ответственный за это.
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 02.11.2016, 00:14
Новичок на форуме
Отправить личное сообщение для vasek123 Посмотреть профиль Найти все сообщения от vasek123
 
Регистрация: 07.10.2016
Сообщений: 7

Сообщение от Aetae Посмотреть сообщение
Нет, я не о том. Если во вкладках нужны разные страницы, то вообще не нужно их запоминать в куки.

По сути если pathname изменилось, то страница какбэ и так перезагружена и никаких дополнительных скриптов не надо.)
Если конечно не использовался history.pushState, но в таком случае и изменять надо кусок кода ответственный за это.
тут суть всего этого в чем, есть сайт, страницы в нем грузятся аяксом, при этом в урл подставляется адрес(как раз таки используя history.pushState) той страницы которая загрузилась. ну и попутно обновляем куки на актуальный адрес. И как бы если человек будет копировать адрес текущей страницы из адресной строки браузера, адрес будет на нужную страницу. Но при таком подходе, если человек в браузере нажимает кнопку "назад", страница не подгружает предыдущую, просто меняется адрес и все.

а этим скриптом, мы раз в секунду сравниваем адрес из адресной строки и тот адрес что у нас в куках. а итоге у нас "как бы" работают кнопки браузера "вперед" и "назад".

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

вот отсюда и мой вопрос, как делать проверку куки == урл, только на текущей странице.
Ответить с цитированием
  #6 (permalink)  
Старый 02.11.2016, 00:26
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,588

Это очень очень костыльное решение, делающее бессмысленным ajax подгрузку как таковую.
Для решения "проблемы" back/forward существует событие "popstate", которое происходит каждый раз при переходе по истории. Вам надо повесить обработчик на это событие, и в случае если пользователь возвращается назад просто грузить предыдущее состояние(в крайнем случае перезагружать станицу, но это не разумно).
__________________
29375, 35

Последний раз редактировалось Aetae, 02.11.2016 в 00:31.
Ответить с цитированием
  #7 (permalink)  
Старый 02.11.2016, 00:43
Новичок на форуме
Отправить личное сообщение для vasek123 Посмотреть профиль Найти все сообщения от vasek123
 
Регистрация: 07.10.2016
Сообщений: 7

Сообщение от Aetae Посмотреть сообщение
Это очень очень костыльное решение, делающее бессмысленным ajax подгрузку как таковую.
Для решения "проблемы" back/forward существует событие "popstate", которое происходит каждый раз при переходе по истории. Вам надо повесить обработчик на это событие, и в случае если пользователь возвращается назад просто грузить предыдущее состояние(в крайнем случае перезагружать станицу, но это не разумно).
подгружать страницы при изменении ссылки аяксом можно и сейчас, заменив location.reload(); на функцию которая загружает мне страницы.

вопрос в другом, как это делать только в активной вкладке?

отказываться от использования cookie конкретно в это случае смысла нет, так как они фигурируют и используются и в других местах. При чем те же самые. да и popstate не совсем кросбраузерно.
Ответить с цитированием
  #8 (permalink)  
Старый 02.11.2016, 00:56
Новичок на форуме
Отправить личное сообщение для vasek123 Посмотреть профиль Найти все сообщения от vasek123
 
Регистрация: 07.10.2016
Сообщений: 7

пока остановился на document.hidden
Ответить с цитированием
  #9 (permalink)  
Старый 02.11.2016, 01:03
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,588

"popstate" ровно настолько же кроссбраузерен, насколько "history.pushState". Это детали одной технологии. Нужны куки - пишите их, кто вам не даёт, а перезагружать постоянно страницу с секундными задержками, вместо реакции на конкретные действия пользователя - это просто бред, мягче, увы, не скажешь.
__________________
29375, 35
Ответить с цитированием
  #10 (permalink)  
Старый 02.11.2016, 01:06
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

// В конец страницы
var firstVisibility = true; // При первой загрузке страницы
$(document).live("visibilitychange", function() {
				if (firstVisibility) {
					firstVisibility = false;
					return false
				}
				if (document.visibilityState == "visible") {
 					//Тут наши функции при visible
				}
})

Последний раз редактировалось Deff, 02.11.2016 в 03:03.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Некорректная работа скрипта в разных браузерах en-k Общие вопросы Javascript 2 15.03.2011 14:54
Работа скрипта после ajax обновления Nonamer jQuery 1 11.02.2011 15:19
Некорректная работа скрипта defond Серверные языки и технологии 15 24.01.2011 18:07
Работа скрипта в разных браузерах estonec Internet Explorer 5 24.03.2010 13:39
Асинхронная работа скрипта slivka_83 Общие вопросы Javascript 3 10.09.2009 15:44