Redirecionar site após um certo período de tempo

135

O que preciso fazer para ter uma função em um site em que ele diz que o redirecionará para o site em 3 segundos ou mais?

codedude
fonte
Só estou curioso, por que você gostaria de fazer isso? Sempre que visitei essa página, prefiro ter sido direcionado em 0 segundos.
precisa saber é o seguinte
@allesklar desculpe pela resposta tardia. Estou desenvolvendo um site e queria ver se era mais fácil mudar do editor de código para o navegador da Web sem precisar atualizar sempre.
Codigoude
Esse gerador de redirecionamento JS ajudará você a criar facilmente snippets de redirecionamento atrasado. Ele possui suporte noscript e seo, além de uma correção para o IE 8 - e inferior - para passar o referenciador http!
Patartics Milão
1
@allesklar um exemplo para usar isso. Se você alterar seu domínio e desejar que todos sejam redirecionados para o novo domínio no primeiro mês (mas avise a eles que o domínio antigo será removido após um mês ou mais). Porque mesmo se você enviar e enviar e-mail, sempre haverá alguém que esquecerá e vai para o domínio antigo.
Patricia

Respostas:

209
<meta http-equiv="refresh" content="3;url=http://www.google.com/" />
Darin Dimitrov
fonte
Ou simplesmente redirecionar para a raiz se você tiver vários sites usando <meta http-equiv = conteúdo "refresh" = "3; url = /" />
DJSampat
1
O W3C recomenda este tag não ser usado: w3.org/TR/WCAG10-HTML-TECHS/#meta-element
huseyin39
69

Você provavelmente está procurando a meta refreshtag :

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

Observe que o uso de meta refreshestá obsoleto e desaprovado nos dias de hoje, mas às vezes é a única opção viável (por exemplo, se você não pode gerar geração de cabeçalhos de redirecionamento HTTP do lado do servidor e / ou precisa oferecer suporte a clientes não JavaScript, etc. )

LukeH
fonte
52

Se você deseja maior controle, pode usar javascript, em vez de usar a metatag. Isso permitiria ter um visual de algum tipo, por exemplo, uma contagem regressiva.

Aqui está uma abordagem muito básica usando 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>

mbrevoort
fonte
Esse seria o caminho a seguir, se você desejar que o texto conte dinamicamente até 0 antes do redirecionamento. Use um cronômetro de 1 segundo, em que a função de cronômetro atualiza o texto HTML e, em seguida, inicie um novo cronômetro de 1 segundo, até decorridos 3 segundos, e faça o redirecionamento.
Remy Lebeau
19

Aqui está um exemplo completo (ainda simples) de redirecionamento após X segundos, ao atualizar um contador 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>

O conteúdo inicial da counterdiv é o número de segundos para aguardar.

noamtm
fonte
Isso não funcionou até que eu substituí location.href="https://example.com";porwindow.location='https://example.com'
NateH06 29/07
1
Pode ser melhor usar window.location.replace("http://example.com");pelos motivos discutidos aqui: stackoverflow.com/a/506004 A alteração daria a essa resposta uma maior generalidade.
Psyche
10

A maneira mais simples é usar a tag HTML META como esta:

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

Wikipedia

Ehsan
fonte
4

Coloque o seguinte código de redirecionamento HTML entre as tags e do seu código HTML.

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

O código de redirecionamento HTML acima redirecionará seus visitantes para outra página da web instantaneamente. O conteúdo = "3; pode ser alterado para o número de segundos que você deseja que o navegador espere antes de redirecionar. 4, 5, 8, 10 ou 15 segundos, etc.

Muhammad Saqib
fonte
1

Use este código javascript simples para redirecionar a página para outra página usando um intervalo de tempo específico ...

Adicione este código à página do seu site, que você deseja redirecionar:

<script type="text/javascript">
(function(){
   setTimeout(function(){
     window.location="http://brightwaay.com/";
   },3000); /* 1000 = 1 second*/
})();
</script>
Sunny SM
fonte
<meta http-equiv="refresh" content="3;url=http://example.com/" />é uma opção melhor, pois é mais simples e funciona sem suporte a JavaScript.
Edward Edward
você está certo mano ... mas isso depende da situação .. em algum momento precisamos redirecionar um evento específico para essa JS é a melhor opção.
Sunny SM
Entendi o que você quer dizer com "Sunny SM". Embora as metatags devam ser usadas quase sempre, pode haver cenários específicos como o seu, onde o JavaScript seria a única opção.
Edward Edward