Przekieruj stronę internetową po pewnym czasie


135

Co muszę zrobić, aby mieć funkcję w witrynie, która mówi, że przekieruje Cię do witryny za około 3 sekundy?



Jestem po prostu ciekawy, dlaczego miałbyś kiedykolwiek chcieć to zrobić? Za każdym razem, gdy odwiedzałem taką stronę, wolałbym zostać skierowany w 0 sekund.
allesklar

@allesklar przepraszam za spóźnioną odpowiedź. Jestem w trakcie tworzenia witryny i chciałem sprawdzić, czy jest łatwiejsze przejście z edytora kodu do przeglądarki internetowej bez konieczności odświeżania za każdym razem.
kodedude

Ten generator przekierowań JS pomoże Ci łatwo utworzyć fragmenty opóźnionych przekierowań. Obsługuje noscript i seo, a także ma poprawkę do IE 8 i niższą, aby przejść przez referer http!
Patartics Milán

1
@allesklar jeden przykład użycia tego. Jeśli zmienisz domenę i chcesz, aby wszyscy zostali przekierowani do nowej domeny w pierwszym miesiącu (ale powiadomienie ich, że stara domena zostanie usunięta po mniej więcej miesiącu). Ponieważ nawet jeśli wyślesz i wyślesz e-mail, zawsze znajdzie się ktoś, kto zapomni i przejdzie do starej domeny.
patricia

Odpowiedzi:


209
<meta http-equiv="refresh" content="3;url=http://www.google.com/" />

Lub po prostu przekieruj do katalogu głównego, jeśli masz wiele witryn, używając <meta http-equiv = "refresh" content = "3; url = /" />
DJSampat


69

Prawdopodobnie szukasz meta refreshtagu :

<html>
    <head>
        <meta http-equiv="refresh" content="3;url=http://www.somewhere.com/" />
    </head>
    <body>
        <h1>Redirecting in 3 seconds...</h1>
    </body>
</html>

Zwróć uwagę, że w meta refreshdzisiejszych czasach używanie programu jest przestarzałe i marszczone, ale czasami jest to jedyna realna opcja (na przykład, jeśli nie możesz generować nagłówków przekierowań HTTP po stronie serwera i / lub musisz obsługiwać klientów innych niż JavaScript itp. ).


52

Jeśli chcesz mieć większą kontrolę, możesz użyć javascript zamiast używać metatagu. Pozwoliłoby to na uzyskanie pewnego rodzaju wizualizacji, np. Odliczania.

Oto bardzo podstawowe podejście przy użyciu setTimeout()

<html>
    <body>
    <p>You will be redirected in 3 seconds</p>
    <script>
        var timer = setTimeout(function() {
            window.location='http://example.com'
        }, 3000);
    </script>
</body>
</html>


Byłby to właściwy sposób, jeśli chcesz, aby tekst przed przekierowaniem dynamicznie odliczał do 0. Użyj 1-sekundowego licznika czasu, w którym funkcja licznika czasu aktualizuje tekst HTML, a następnie uruchamia nowy 1-sekundowy licznik czasu, aż upłyną 3 sekundy, a następnie wykonaj przekierowanie.
Remy Lebeau

19

Oto kompletny (ale prosty) przykład przekierowania po X sekundach podczas aktualizowania licznika div:

<html>
<body>
    <div id="counter">5</div>
    <script>
        setInterval(function() {
            var div = document.querySelector("#counter");
            var count = div.textContent * 1 - 1;
            div.textContent = count;
            if (count <= 0) {
                window.location.replace("https://example.com");
            }
        }, 1000);
    </script>
</body>
</html>

Początkowa zawartość elementu counterdiv to liczba sekund oczekiwania.


To nie działa, dopóki nie otrzymuje location.href="https://example.com";zwindow.location='https://example.com'
NateH06

1
Może być lepiej window.location.replace("http://example.com");z powodów omówionych tutaj: stackoverflow.com/a/506004 Zmiana zapewniłaby tę odpowiedź bardziej ogólną.
Psyche

10

Najprostszym sposobem jest użycie metatagu HTML w następujący sposób:

<meta http-equiv="refresh" content="3;url=http://example.com/" />

Wikipedia


4

Umieść następujący kod przekierowania HTML między tagami i kodu HTML.

<meta HTTP-EQUIV="REFRESH" content="3; url=http://www.yourdomain.com/index.html">

Powyższy kod przekierowania HTML natychmiast przekieruje odwiedzających na inną stronę internetową. Treść = „3; można zmienić na liczbę sekund, przez jaką przeglądarka ma czekać przed przekierowaniem. 4, 5, 8, 10 lub 15 sekund itd.


1

Użyj tego prostego kodu javascript, aby przekierować stronę na inną stronę w określonym przedziale czasu ...

Dodaj ten kod do swojej strony internetowej, na którą chcesz przekierować:

<script type="text/javascript">
(function(){
   setTimeout(function(){
     window.location="http://brightwaay.com/";
   },3000); /* 1000 = 1 second*/
})();
</script>

<meta http-equiv="refresh" content="3;url=http://example.com/" />jest lepszą opcją, ponieważ jest prostsza i działa bez obsługi JavaScript.
Edward

masz rację, bracie ... ale to zależy od sytuacji ... czasami musimy przekierować na konkretne wydarzenie, ponieważ JS jest najlepszą opcją.
Sunny SM,

Rozumiem, co masz na myśli, „Sunny SM”. Chociaż metatagi powinny być używane prawie zawsze, mogą istnieć scenariusze, takie jak Twój, w których JavaScript byłby jedyną opcją.
Edward,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.