Como recarregar uma página usando JavaScript

876

Como recarregar a página usando JavaScript?

Eu preciso de um método que funcione em todos os navegadores.

Resh
fonte

Respostas:

948

JavaScript 1.0

window.location.href = window.location.pathname + window.location.search + window.location.hash;
// creates a history entry

JavaScript 1.1

window.location.replace(window.location.pathname + window.location.search + window.location.hash);
// does not create a history entry

JavaScript 1.2

window.location.reload(false); 
// If we needed to pull the document from
//  the web-server again (such as where the document contents
//  change dynamically) we would pass the argument as 'true'.
gianebao
fonte
82
'true' forçará a página a ser recarregada do servidor. 'false' será recarregado do cache, se disponível.
barro32
3
É .reload(true)adicionado ao histórico? Se sim, como evitar isso com a recarga?
johntrepreneur
13
Aqui está um link para os docs: developer.mozilla.org/en-US/docs/Web/API/window.location
Justin Ethier
1
Esta é a melhor resposta e deve estar no topo. Meu problema com as outras funções é que elas não estavam atualizando a página com o conteúdo do servidor e usando o cache, então a solução JavaScript 1.2 foi a melhor e única solução para mim.
Ryan Coolwebs 11/03/16
8
.reload (true) ou .reload (false) é obsoleta de acordo com o meu IDE e github.com/Microsoft/TypeScript/issues/28898 - agora deve usar .reload ()
danday74
390
location.reload();

Veja esta página MDN para mais informações.

Se você estiver atualizando após um onclick, precisará retornar false diretamente após

location.reload();
return false;
Lekensteyn
fonte
23
qual é a diferença entre location.reload()e window.location.reload()?
Raptor
54
@ShivanRaptor Normalmente nenhum, no contexto navegadores web, locationé o mesmo que window.locationcomo windowé o objeto global.
Lekensteyn
1
não se esqueça de return false;chamar isso de um onclick em um link.
Rimian
2
Eu prefiro usar window.location.reload();para facilitar a leitura, pois locationpode ser uma variável local - enquanto você normalmente evita variáveis ​​do nome window.
Yeti
219

Aqui estão 535 maneiras de recarregar a página usando JavaScript , o mais fácil location = location.

Estes são os primeiros 50:

location = location
location = location.href
location = window.location
location = self.location
location = window.location.href
location = self.location.href
location = location['href']
location = window['location']
location = window['location'].href
location = window['location']['href']
location = window.location['href']
location = self['location']
location = self['location'].href
location = self['location']['href']
location = self.location['href']
location.assign(location)
location.replace(location)
window.location.assign(location)
window.location.replace(location)
self.location.assign(location)
self.location.replace(location)
location['assign'](location)
location['replace'](location)
window.location['assign'](location)
window.location['replace'](location)
window['location'].assign(location)
window['location'].replace(location)
window['location']['assign'](location)
window['location']['replace'](location)
self.location['assign'](location)
self.location['replace'](location)
self['location'].assign(location)
self['location'].replace(location)
self['location']['assign'](location)
self['location']['replace'](location)
location.href = location
location.href = location.href
location.href = window.location
location.href = self.location
location.href = window.location.href
location.href = self.location.href
location.href = location['href']
location.href = window['location']
location.href = window['location'].href
location.href = window['location']['href']
location.href = window.location['href']
location.href = self['location']
location.href = self['location'].href
location.href = self['location']['href']
location.href = self.location['href']
...
Jeremy Thille
fonte
84
isso é interessante, mas agora eu estou confuso
Arun Prasad ES
14
Ele também destaca a peculiaridade do Javascript :)
Jeremy Thille
53
Pessoalmente, não gosto dessa resposta, pois isso mostra apenas algumas implementações diferentes para alterar o local. Essas maneiras são permutações de maneiras diferentes de executar uma função ou acessar um atributo em javascript. NÃO maneiras diferentes de recarregar uma página.
Joshua Behrens
42
Claro que existem ainda mais coisas como:window.window.window['window'].location = window['window'].window['window']['window']['window']['window']['window']['window']['location']
Renato
85

Você pode executar esta tarefa usando window.location.reload();. Como existem várias maneiras de fazer isso, acho que é a maneira apropriada de recarregar o mesmo documento com JavaScript. Aqui está a explicação

window.locationObjeto JavaScript pode ser usado

  • para obter o endereço da página atual (URL)
  • redirecionar o navegador para outra página
  • recarregar a mesma página

window: em JavaScript representa uma janela aberta em um navegador.

location: em JavaScript contém informações sobre o URL atual.

O locationobjeto é como um fragmento do windowobjeto e é chamado através da window.locationpropriedade

location O objeto possui três métodos:

  1. assign(): usado para carregar um novo documento
  2. reload(): usado para recarregar o documento atual
  3. replace(): usado para substituir o documento atual por um novo

Então, aqui precisamos usar reload(), pois isso pode nos ajudar a recarregar o mesmo documento.

Então use como window.location.reload();.

Demonstração on-line no jsfiddle

Para solicitar ao seu navegador que recupere a página diretamente do servidor e não do cache, você pode passar um trueparâmetro para location.reload(). Este método é compatível com todos os principais navegadores, incluindo IE, Chrome, Firefox, Safari, Opera.

Nikhil Agrawal
fonte
2
Ah ha! replace()acabou sendo a solução que eu estava procurando, porque precisava recarregar minha página com uma ligeira alteração na string de consulta.
Bernard Hymmen 01/07/2015
Em w3schools: "A diferença entre assign () e replace () é que replace () remove a URL do documento atual do histórico do documento, o que significa que não é possível usar o botão" voltar "para navegar de volta para o documento original."
Pasaba por aqui 11/11/18
54

Tentar:

window.location.reload(true);

O parâmetro definido como 'true' recarrega uma nova cópia do servidor. Deixá-lo servirá a página do cache.

Mais informações podem ser encontradas no MSDN e na documentação do Mozilla .

Orane
fonte
1
e se eu quiser atualizar uma página da web externa www.xyz.com/abc?
DoIt
@ Dev: Você deve tentar "substituir", como mencionado mais adiante
Jean Paul AKA el_vete
@ Orane: Gosto tanto da simplicidade quanto da desenvoltura desta resposta, particularmente para oferecer muitas opções apenas para satisfazer a consulta da operação, ou seja, obrigado por fornecer um link referenciado por autoridade nessa situação também, para referência futura a cada navegador tem seu próprio mecanismo JS para renderizar ... Eu acho que a pergunta é muito geral e deve depender do que você deseja fazer, porque outra referência na Web: " phpied.com/files/location-location/location- location.html "pode ​​satisfazer completamente o op desta pergunta. No entanto, este me ajudou;)
Jean Paul AKA el_vete 30/17/17
1
Isso ainda é verdade? Ambos os links não mencionam nenhum parâmetro para recarregar.
Rüdiger Schulz
51

Eu estava procurando algumas informações sobre recarregamentos em páginas recuperadas com solicitações POST, como após o envio de um method="post"formulário.

Para recarregar a página mantendo os dados do POST, use:

window.location.reload();

Para recarregar a página descartando os dados do POST (execute uma solicitação GET), use:

window.location.href = window.location.href;

Espero que isso ajude outras pessoas a procurar a mesma informação.

Starwarswii
fonte
Obrigado pela resposta, incluindo uma referência para recarregar um documento recuperado com uma POSTsolicitação.
Christopher Schultz
Boa distinção entre GETe POSTmétodos
Hassan Baig
Esta resposta foi muito baixa!
Greg Randall
1
window.location.href = window.location.hrefnão recarrega a página se o URL atual contiver a #. Você pode remover o hash se não precisar dele window.location.href = window.location.href.split('#')[0];.
Roland Starke
41

Para recarregar uma página usando JavaScript, use:

window.location.reload();
Girish Ninama
fonte
37

Isso funciona para mim:

function refresh() {    
    setTimeout(function () {
        location.reload()
    }, 100);
}

http://jsfiddle.net/umerqureshi/znruyzop/

umer
fonte
Isso, para mim, é preferível, pois evita uma condição de loop no lado do servidor.
ILMostro_7
1
Agradeço particularmente a inclusão da função de tempo limite, porque ainda tenho uma mensagem que desejo exibir antes que a atualização ocorra. Parabéns!
Matt Cremeens
você pode definir valores diferentes como um segundo argumento para a função setTimeout, mas isso não funciona, o recarregamento ocorre imediatamente, como resolvê-lo?
O.Kuz
1
@ O.Kuz acho que não. digamos que, se você definir o valor como 5000ms, o recarregamento ocorrerá após 5 segundos. Veja jsfiddle.net/umerqureshi/znruyzop/446
umer
1
Preciso encontrar um erro no meu código) Muito obrigado!
O.Kuz
15

Se você colocar

window.location.reload(true);

no início da sua página sem nenhuma outra condição qualificada para a execução desse código, a página será carregada e continuará sendo recarregada até você fechar o navegador.

Joe Devlin
fonte
Bem, ou até você abrir outro URL. Provavelmente depende da capacidade do navegador de lidar com (re) carregamentos contínuos de páginas.
precisa saber é o seguinte
bem, isso depende de onde você o coloca, como você afirmou corretamente. Estamos nos referindo aqui apenas que talvez uma tag âncora não seja o elemento intuitivo para executar uma ação como recarregar a página. Sugestão: dependemos de outro objeto da interface do usuário como destino para realizar um evento onclick. Você pode fazer isso no jQuery após o carregamento da página, segmentando uma div, por exemplo, se você a decorar com css. Depende do que você deseja fazer com ela. Nesse contexto, um botão em vez de um botão de tipo de entrada. Se não estamos planejando passar um argumento para o back-end do aplicativo, parece mais apropriado.
Jean Paul AKA el_vete
IE: <botão onclick = "javascript: window.location.reload (true);"
Jean Paul AKA el_vete
11
location.href = location.href;
guilin 桂林
fonte
5
Os navegadores modernos ignoram isso porque o href não muda, portanto não há necessidade de recarregá-lo. Você deve usar isso apenas como failover para navegadores antigos sem recarga: (location.reload location.reload (?): Location.href = location.href)
Radek Pech
@RadekPech Quais navegadores mais antigos não possuem location.reload()?
Matthias
8

Para torná-lo fácil e simples, use location.reload(). Você também pode usar location.reload(true)se quiser pegar algo do servidor.

Joshua
fonte
8

Usando um botão ou apenas coloque-o dentro de uma tag "a" (âncora):

<input type="button" value="RELOAD" onclick="location.reload();" />

Tente estas para outras necessidades:

Location Objects has three methods --

assign() Used to load a new document
reload() Used to reloads the current document.
replace() Used to replace the current document with a new one
Arun Prasad ES
fonte
1
interessante ... que tal <button> </button>? funciona da mesma maneira, certo?
Jean Paul AKA el_vete
1
Funcionou como um encanto! Veja minha resposta abaixo :) Obrigado
Jean Paul AKA el_vete
5

Mais curto ( mais )

history.go()
Kamil Kiełczewski
fonte
4

Página de recarga automática após 20 segundos.

<script>
    window.onload = function() {
        setTimeout(function () {
            location.reload()
        }, 20000);
     };
</script>
Ali Chegini
fonte
4

Obrigado, este post foi muito útil, não apenas para recarregar a página com a resposta sugerida, mas também para me dar a ideia de colocar um ícone da interface do usuário do jQuery em um botão:

<button style="display:block; vertical-align:middle; height:2.82em;"
        title="Cargar nuevamente el código fuente sin darle un [Enter] a la dirección en la barra de direcciones"
        class="ui-state-active ui-corner-all ui-priority-primary" 
        onclick="javascript:window.location.reload(true);">
    <span style="display:inline-block;" class="ui-icon ui-icon-refresh"></span>
    &nbsp;[<b>CARGAR NUEVAMENTE</b>]&nbsp;
</button>

Editado para mostrar como isso se parece quando incluído em um projeto

02/07/2016

Minhas desculpas, pois este é um projeto pessoal que implica o uso da interface do usuário do jQuery, Themeroller, estrutura de ícones, métodos como as guias do jQuery, mas em espanhol;)

Jean Paul AKA el_vete
fonte
@ Peter Mortensen: Obrigado pela edição, o protótipo do projeto foi feito para a faculdade, portanto ele precisava estar em espanhol nas cenas em anexo .. minhas desculpas por isso .. é claro, havia a necessidade de ter algum núcleo relacionado ao jQuery UI dependências para combiná-lo como: --- por exemplo, o widget ThemeRoller jqueryui.com/themeroller e plug-ins como: plugins.jquery.com/qTip2 , datatables.net .. a própria biblioteca jQuery, etc. A ação foi realizada com base em algumas das respostas acima: onclick = "javascript: window.location.reload (true);">!
Jean Paul AKA el_vete
3

Isso deve funcionar:

window.location.href = window.location.href.split( '#' )[0];

ou

var x = window.location.href;
x = x.split( '#' );
window.location.href = x[0];

Eu prefiro isso pelos seguintes motivos:

  • Remove a parte após o #, garantindo que a página seja recarregada nos navegadores que não recarregam o conteúdo que a possui.
  • Ele não pergunta se você deseja republicar o último conteúdo se você enviou um formulário recentemente.
  • Ele deve funcionar mesmo nos navegadores mais recentes. Testado no Lasted Firefox e Chrome.

Como alternativa, você pode usar o método oficial mais recente para esta tarefa

window.location.reload()
Ayoola Falola
fonte
3

Use este botão para atualizar a página

DEMO

<input type="button" value="Reload Page" onClick="document.location.reload(true)">
Meysam
fonte
2

O método reload () é usado para recarregar o documento atual.

O método reload () faz o mesmo que o botão recarregar no seu navegador.

Por padrão, o método reload () recarrega a página do cache, mas você pode forçá-lo a recarregar a página do servidor, definindo o parâmetro forceGet como true: location.reload (true).

        location.reload();
GeniusGeek
fonte
-3

Você pode simplesmente usar

window.location=document.URL

onde document.URL obtém o URL da página atual e o window.location o recarrega.

Sanu Uthaiah Bollera
fonte
2
Os navegadores modernos ignoram isso porque o href não muda, portanto não há necessidade de recarregá-lo. Você deve usar isso apenas como failover para navegadores antigos sem recarga: (location.reload location.reload (): location = document.URL?)
Radek Pech