Разовое появление картинки

 
0
 
JavaScript
ava
viboxjuwin | 30.09.2013, 17:41
Разовое появление картинки
Необходимо, чтобы:
1) картинка gif (или анимация swf) появилась после открытия страницы ЧЕРЕЗ ОПРЕДЕЛЕННЫЙ ПРОМЕЖУТОК времени;
2) эта картинка (или анимация swf) исчезла после показа и БОЛЬШЕ НЕ ПОЯВЛЯЛАСЬ даже при обновлении страницы.
Comments (10)
ava
ksnk | 30.09.2013, 18:07 #
viboxjuwin,
При старте страницы нужно проверять наличие куки "picture_shown". Если кука есть, то не выводишь код скрипта.
Код скрипта - таймаут на функцию вывода картинки, перед выводом картинки нужно проверить, что кука  'picture_shown' не установлена, чтобы юзер, открывший несколько окон, не получил спам на каждом окне.
При выводе картинки устанавливаем куку "picture_shown".

Для пущей крутости, можно почитать http://habrahabr.ru/post/190488/ про "куки без куков".
ava
CruorVult | 01.10.2013, 15:20 #
Цитата (ksnk @  30.9.2013,  18:07 findReferencedText)
Для пущей крутости, можно почитать http://habrahabr.ru/post/190488/ про "куки без куков". 



ksnk, данный подход нужно использовать в ОЧЕНЬ специфических кейсах. Не думаю, что ТС понадобиться это.  А то слова "Для пущей крутости"  могут неким образом повлиять на некоторых, и те в свою очередь понаписываю код, который никогда не понадобиться.
ava
ksnk | 01.10.2013, 15:26 #
CruorVult
Цитата (viboxjuwin @  30.9.2013,  16:41 findReferencedText)
картинка gif (или анимация swf) появилась после открытия страницы ЧЕРЕЗ ОПРЕДЕЛЕННЫЙ ПРОМЕЖУТОК времени;

А это как сделать при отключенном JS?  smile 
Не, ну можно, конечно, перегружать страницу по headr-reload? но согласись, энергетически выгоднее наплевать на таких юзеров.
ava
CruorVult | 01.10.2013, 15:44 #
Цитата (ksnk @  1.10.2013,  15:26 findReferencedText)
Да вроде именно этот кейс как раз хорошо подходит.  


Да ну ладно. Этот подход нужен для отслеживания юзеров(причем на сервере) даже тогда, когда они все поодключали на клиенте.

А ТС нужно на клиенте через таймаут проверить куку/Local Storage и показывать или нет.
ava
ksnk | 01.10.2013, 15:52 #
CruorVult, Ну, тут , imho, две задачи. Показать баннер по времени и не показывать его второй раз.
Первая задача решается на JS с таймаутами, а вот вторая именно она и есть.
ava
CruorVult | 01.10.2013, 16:39 #
Цитата (ksnk @  1.10.2013,  15:52 findReferencedText)
а вот вторая именно она и есть


Ну ладно  smile 

Каким образом ты будешь проверять на клиенте что  картинка уже была загружена и второй раз ее отображать не нужно.

Допустим, можно сделать ajax запрос и в хедерах передать If-None-Match: "ETag...". В респонсе проверить статус код 304, и если это так, то не показывать изображение.
Возникает вопрос: Как нам сохранить ETag при первом запросе и передать его повторно для проверки на Modified. Ну как вариант хранить в куках. То есть, мы написали кучу логики и вернулись к тем же кукам.

Надеюсь я ничего не упустил smile 
ava
ksnk | 01.10.2013, 19:53 #
Цитата (CruorVult @  1.10.2013,  16:39 findReferencedText)
Каким образом ты будешь проверять на клиенте что  картинка уже была загружена и второй раз ее отображать не нужно.

Сессионной кукой. Или local storage, как получится.
Вообще говоря, когда юзер запретил броузеру хранить несессионные куки или ходит по сайту в "режиме инкогнито", куки сохранить невозможно.
На одном из "моих" сайтов сейчас примерно такой сервис показывает баннер-форму "вступите в клуб...". Посетителей довольно много и периодически валятся жалобы, что "ваш баннер уже достал". Расследование указывает именно на такие случаи. Надо будет прикрутить etag, может количество жалоб уменьшится smile
ava
ksnk | 01.10.2013, 22:15 #
Цитата (CruorVult @  1.10.2013,  16:39 findReferencedText)
Надеюсь я ничего не упустил

Да, куча логики, все так и есть smile И куки и etag. Еще при наличии куки нужно проверить есть etag или нет и восстановить если надо, и наоборот. Юзеры иногда чистят кэш броузера, иногда куки.
И роботов фильтровать, чтобы не флудить в базе. Надеюсь, ничего не забыл...
ava
CruorVult | 02.10.2013, 10:29 #
Цитата (ksnk @  1.10.2013,  22:15 findReferencedText)
Да, куча логики, все так и есть  И куки и etag


То есть мы реализуем etag + локальное хранилище вместо того, что бы просто использовать локальное хранилище.
ksnk, ты еще тот извращенец smile 
ava
ksnk | 02.10.2013, 11:19 #
Цитата (CruorVult @  2.10.2013,  10:29 findReferencedText)
ты еще тот извращенец

Дык. Жизнь заставляет  :(
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit