Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.10.2013, 13:53
Аспирант
Отправить личное сообщение для Round Посмотреть профиль Найти все сообщения от Round
 
Регистрация: 08.04.2012
Сообщений: 49

Как присвоить класс элементу после проверки cookies
Есть всплывающее окно, на главной, которое должно появляться лишь один раз за визит.

Вот разметка поп-апа:

<div id="popup">

	<!--  ЗДЕСЬ КОНТЕНТ POP-UP  -->

<a class="close_popup" title="Close" onclick="document.getElementById('popup').style.display='none';">CLOSE</a>


</div>


На этом поп-апе висит задержка, вот её код (на всякий случай):

var delay_popup = 1000;
setTimeout("document.getElementById('popup').style.display='block'", delay_popup);


Как сделать так что бы после нажатию на кнопку закрытия поп-ап (class="close_popup") больше не показывать это окно в течении текущего визита?
Ответить с цитированием
  #2 (permalink)  
Старый 14.10.2013, 14:16
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,563

Сообщение от Round
Как сделать так что бы после нажатию на кнопку закрытия поп-ап (class="close_popup") больше не показывать это окно в течении текущего визита?
Кто генерит ХТМЛ страниц?
Серверный язык какой?
Ответить с цитированием
  #3 (permalink)  
Старый 14.10.2013, 14:45
Аспирант
Отправить личное сообщение для Round Посмотреть профиль Найти все сообщения от Round
 
Регистрация: 08.04.2012
Сообщений: 49

Страницу рисует WP на php конечно же.
Ответить с цитированием
  #4 (permalink)  
Старый 14.10.2013, 16:25
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,563

Сообщение от Round
на php конечно же
Тогда просто в сессию запомни, что это уже было и потом генерить не нужно...
Ответить с цитированием
  #5 (permalink)  
Старый 14.10.2013, 18:04
Аспирант
Отправить личное сообщение для Round Посмотреть профиль Найти все сообщения от Round
 
Регистрация: 08.04.2012
Сообщений: 49

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

Если я ошибаюсь скажите в чем.

Но мне кажется что здесь нужно примерно так:

1. проверить наличие куки (например такой: first_visit = false)

2. если она там есть, то скриптом назначить диву #popup . 'display' , 'none'

3. а если её там нет, то после загрузки страницы сработает таймер и покажет поп-ап.

4. тогда на нажатие кнопки class="close_popup" нужно повесить запись этой самой куки first_visit = false без указания времени, что бы она обнулилась по закрытии браузера.


Возможно я алгоритм скомкал, но примерно так.

Вопрос в том как это реализовать?

- Как на кнопку записать ещё одно действие с куками, кроме уже существующего там закрытия?
- Как после того как проверили наличие куки назначить стиль диву #popup . 'display' , 'none', что бы он стал важнее чем в таймере окна? Ведь там свой отсчет идет и 'display none' может стать 'block'.

Может есть проще решение и копаю не туда?
Ответить с цитированием
  #6 (permalink)  
Старый 14.10.2013, 18:15
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от Round
Как на кнопку записать ещё одно действие с куками, кроме уже существующего там закрытия?
Вы можете записать сколько угодно действий на событие. После точки с запятой пишите следующее
Сообщение от Round
Как после того как проверили наличие куки назначить стиль диву #popup . 'display' , 'none', что бы он стал важнее чем в таймере окна? Ведь там свой отсчет идет и 'display none' может стать 'block'.
А не проще при наличии кукис очистить таймер (clearTimeout)? Или вообще изначально не выставлять таймер, если есть кукис

Последний раз редактировалось BETEPAH, 14.10.2013 в 18:17.
Ответить с цитированием
  #7 (permalink)  
Старый 14.10.2013, 18:30
Аспирант
Отправить личное сообщение для Round Посмотреть профиль Найти все сообщения от Round
 
Регистрация: 08.04.2012
Сообщений: 49

Сообщение от BETEPAH Посмотреть сообщение
Вы можете записать сколько угодно действий на событие. После точки с запятой пишите следующее
Я пробовал вот так:

<a class="close_popup" title="Close" onclick="document.getElementById('popup').style.display='none'; document.cookie = 'first_visit = false';">CLOSE</a>


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


Сообщение от BETEPAH Посмотреть сообщение
А не проще при наличии кукис очистить таймер (clearTimeout)? Или вообще изначально не выставлять таймер, если есть кукис
Таймер нужен на тот случай когда это первый визит. Если таймера нет, то сразу вылетает попап, даже не дав посетителю понять куда он попал. А так, перед всплытием попапа есть мгновение когда видно загрузившуюся страничку.

В данный момент я могу и обнулить таймер и\или обернуть этот весь блок ещё в один див ему назначить display=none. (как вариант)

Но все же первичный вопрос остается не раскрытым - если я правильно на кнопку повесил запись куки, то почему она записывается ещё до срабатывания события onclick на этой кнопке?
Ответить с цитированием
  #8 (permalink)  
Старый 14.10.2013, 19:08
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от Round
Таймер нужен на тот случай когда это первый визит. Если таймера нет, то сразу вылетает попап, даже не дав посетителю понять куда он попал. А так, перед всплытием попапа есть мгновение когда видно загрузившуюся страничку.
Попробую на пальцах объяснить тогда
Цитата:
если (кукиса нет) {
ставим таймер на запуск попапа
записываем кукис
} иначе {
ничего не делаем и попап не появится
}
Почему записывается до срабатывания, из этого кода не видно. Наверное, где-то стоит запись в кукис
Ответить с цитированием
  #9 (permalink)  
Старый 14.10.2013, 19:22
Аспирант
Отправить личное сообщение для Round Посмотреть профиль Найти все сообщения от Round
 
Регистрация: 08.04.2012
Сообщений: 49

BETEPAH,

Спасибо за разжевывание, сейчас попробую.

А записи именно в этот кукис нет выше нигде, это же я ему имя дал и его же валуй записал, он нигде выше не может быть... с этим непонятно.
Ответить с цитированием
  #10 (permalink)  
Старый 14.10.2013, 20:26
Аспирант
Отправить личное сообщение для Round Посмотреть профиль Найти все сообщения от Round
 
Регистрация: 08.04.2012
Сообщений: 49

Что делаю не правильно?

alert( document.cookie );

$(document).ready(function () {
 if(cookie.get('first_visit') == null) {

	var delay_popup = 1000;
	setTimeout("document.getElementById('popup').style.display='block'", delay_popup);
	
	  };
 });


Почему не работает?
Консоль кричит, что кукис не найден - if(cookie.get('first_visit') == null) {

А алерт показывает что там есть этот кука.

Где ошибка?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заставить выполняться обработчик после всех имеющихся обработчиков данного элемен Анатолий Саратовцев jQuery 2 08.10.2012 18:49
Выполнение проверки после наступления события juggalo Events/DOM/Window 6 06.10.2012 01:37
Как обратиться к элементу, который был добавлен после полной загрузки DOM? LysoSutriN jQuery 5 02.01.2012 15:59
Как вызвать событие после события определенного в onchange Наталья Events/DOM/Window 2 12.09.2009 13:51
Как передать элемент в функцию после createElement Oleg NT Общие вопросы Javascript 3 23.06.2008 02:11