Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Вопрос по javascript redirect
цитата
24/07/13 в 19:18
 dimetrio
Как грамотно прописать яваскрипт редирект, чтобы пользователю передался реф того сайта с которого он редиректится?
цитата
24/07/13 в 22:55
 CABMIT
Пропиши невидимую ссылку и сделай на неё программный click
цитата
25/07/13 в 08:49
 freeek
насколько я помню javascript и так оставляет реф в браузере, единственная проблема может быть в msie <= 8, для это используют что то вроде этого:

Код:

<?php $location = 'http://www.google.com/';?>
<a style="display:none" id="link" href="<?=$location?>">&nbsp;</a>
<script type="text/javascript">isNaN(-[1,])?document.getElementById("link").click():top.location="<?=$location?>";</script>
<noscript><meta http-equiv="refresh" content="0;url=<?=$location?>"></noscript>
цитата
27/07/13 в 00:00
 dimetrio
CABMIT писал:
Пропиши невидимую ссылку и сделай на неё программный click

а можно код?
цитата
27/07/13 в 00:48
 CABMIT
Что-то вроде этого
Код:
<a id="link" style="display:none" href="http://google.com/"></a>
<script>document.getElementById('link').click();</script>

Только тег script должен обязательно идти ниже ссылки (можно перед закрывающим тегом body), чтобы DOM успел прогрузиться. Если используется jQuery, то можно сделать так:
Код:
<script>
$(function(){
  document.getElementById('link').click();
})
</script>
и поместить этот блок в HEAD
цитата
02/08/13 в 20:48
 Akira07
Цитата:
Что-то вроде этого

А как здесь прописать 10-секундную задержку редиректа?
цитата
02/08/13 в 20:57
 ^Krot
Ещё проще вариант. Реф передаёт.
Код:
<script>document.location.href = 'http://google.com/';</script>
цитата
02/08/13 в 22:10
 Stek
Самый надежный вариант - редитект через сабмит формы. Во всех остальных случаях очень большая вероятность в качестве рефа получить начальную ссылку.
цитата
03/08/13 в 09:19
 Yacc
Правильный ответ: не делать редирект на клиенте. Но если это неизбежно, то надо делать так:

Код:
<!DOCTYPE html>
<html>
    <head>
        <link rel="canonical" href="http://redirect.to"/>
        <noscript>
            <meta http-equiv="refresh" content="0; url=http://redirect.to">
        </noscript>
    </head>
    <body>
        <script>
            var url = 'http://redirect.to';
            if(navigator.userAgent.match(/MSIE\s(?!9.0)/)) {
                var a = document.createElement('a');
                a.href = url;
                document.body.appendChild(a);
                a.click()
            }
            else
                window.location.replace(url)
        </script>
    </body>
</html>
цитата
03/08/13 в 11:44
 DED
Stek писал:
Самый надежный вариант - редитект через сабмит формы. Во всех остальных случаях очень большая вероятность в качестве рефа получить начальную ссылку.

так и есть. я бы другие варианты даже не расматривал.
цитата
04/08/13 в 15:09
 freeek
интересный способ, но все таки единственное, проверку на IE я бы делал как у меня или что то на подобие. иногда браузеры любят приврать и прикинуться IE.


Эта страница в полной версии