Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Объект History и iframe (https://javascript.ru/forum/events/21394-obekt-history-i-iframe.html)

xloading 07.09.2011 19:45

Объект History и iframe
 
Здравствуйте,

я не профессионал в JS, но возникла задача, которую иными средствами решить возможным не представляется, но и через JS тоже почему-то не выходит.

Суть такова: при загрузке динамической страницы, цель которой осуществить редирект посетителя, необходимо определить метод попадания на эту страницу - либо пользователь пришёл на неё по ссылке, либо редирект уже был осуществлён до этого и пользователь пришёл с помощью back button браузера.

Мне изначально показалось реальным решить эту задачу с помощью объекта History в JS, для чего я создал iframe, в котором выполняю history.go(1), а из родительского документа хочу проверить document.getElementById('iframeID').contentWindow. location.href и если он не первоначальный, то значит в history был объект "впереди" и пришли по back button.

Проблема в том, что каким бы образом я ни пытался обращаться к history.go(1) через элемент iframe, редирект всё равно происходит главной страницы, а не внутри iframe.

Информация по этому объекту почему-то недостаточно ясная, поэтому я хотел бы уточнить - это умышленное ограничение имплементации и history-walk нельзя проделать внутри Iframe в целях конфиденциальности, или я всё-таки делаю что-то не так?

Проверялось на браузерах IE8 и Chrome (точную версию не назову, пишу с домашней машины).

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

Заранее спасибо за любые советы!

yashka525 09.09.2011 21:36

Цитата:

Сообщение от xloading
редирект уже был осуществлён до этого и пользователь пришёл с помощью back button браузера

На сайте можно сделать кратковременные кукис, и проверить - если кукис пустые - то пользователь только что зашел на сайт. А если кукисы не пустые, но определенные вон на той странице на Вашем сайте с которой пользователь и пришёл с помощью back button браузера, то...

melky 10.09.2011 11:00

Цитата:

Сообщение от xloading (Сообщение 125423)
либо пользователь пришёл на неё по ссылке, либо редирект уже был осуществлён до этого и пользователь пришёл с помощью back button браузера.

погуглите в сторону document.referrer
это позволит определить страницу, с которой пришел пользователь

насчет кнопки назад - пользоваться народными средствами (выше, куки)

crayday 10.09.2011 13:24

Цитата:

Сообщение от xloading
Прошу удержаться от соблазна обсуждать изначальную задачу, приложение очень специфичное и избежать этого момента практически не представляется возможным

А соблазн действительно велик =) Что это за специфика? Просто очень интересно.

xloading 11.09.2011 13:32

Спасибо всем за ответы, по порядку:
1) Касательно решения с cookies - я над этим думал, но не складывается оно что-то - дело в том, что редирект происходит не на мой сайт, поэтому установка их на "конечной" странице, с которой потом и происходит возвращение, не представляется возможным...
2) Уж поверьте, referrer - это первое, на что я рассчитывал, вот только оказалось, что при возвращении к документу с помощью back button реферрер остаётся старым (т.е. оригинальным).
3) Приложение на стыке СЕО и адвертайзинга, и ни о каком UI речи не идет - задача именно правильно определять направления движения пользователей и корректно осуществлять в соответствии с этим редирект.


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