Respostas:
Se bem me lembro, window.location.reload()recarrega a página atual com dados POST, enquantowindow.location.href=window.location.href não inclui os dados do POST.
Conforme observado por @ W3Max nos comentários abaixo, window.location.href=window.location.hrefnão recarregará a página se houver uma âncora (#) na URL - você deve usarwindow.location.reload() neste caso.
Além disso, conforme observado por @Mic abaixo, window.location.reload()é usado um argumento adicional skipCachepara que, com o uso window.location.reload(true)do navegador, pule o cache e recarregue a página do servidor. window.location.reload(false)fará o oposto e carregará a página do cache, se possível.
Se você disser que window.location.reload(true)o navegador ignorará o cache e recarregará a página do servidor.window.location.reload(false)fará o oposto.
Nota: o defaultvalor para window.location.reload()éfalse
window.location.href = window.location.hrefo truque.
location.reload()ou location.reload(false). Para fazer uma atualização completa da página, use location.reload(true).
A diferença é que
window.location = document.URL;
não recarregará a página se houver um hash (#) no URL (com ou sem algo após), enquanto
window.location.reload();
recarregará a página.
location.href = location.hrefcomo certo, mas eu apenas notei esse comportamento exato e vim para o SO para espalhar a palavra. Basta usar location.reload().
window.location.replace(window.location.pathname);
Se você adicionar o valor booleano true ao recarregamento,
window.location.reload(true)ele será carregado do servidor.
Não está claro o quão suportado é esse booleano, o W3Org menciona que o NS usou para suportar lo
Pode haver uma diferença entre o conteúdo de window.location.href e document.URL - há, pelo menos, costumava ser uma diferença entre location.href eo não-padrão e obsoleto document.location que tinha a ver com o redirecionamento, mas que é realmente o último milênio.
Para fins de documentação, eu usaria window.location.reload () porque é isso que você deseja fazer.
Deparei-me com essa questão pesquisando algum comportamento aberrante no IE, especificamente no IE9, não verificou versões mais antigas. Parece
window.location.reload();
resulta em uma atualização que apaga a tela inteira por um segundo, onde
window.location = document.URL;
atualiza a página muito mais rapidamente, quase imperceptivelmente.
Fazendo um pouco mais de pesquisa e algumas experiências com o violinista, parece que window.location.reload()ele ignorará o cache e será recarregado do servidor, independentemente de você passar o booleano com ele ou não, isso inclui obter todos os seus ativos (imagens, scripts, folhas de estilo, etc) novamente. Portanto, se você quiser que a página atualize o HTML, window.location = document.URLela retornará muito mais rápido e com menos tráfego.
Uma diferença de comportamento entre os navegadores é que, quando o IE9 usa o método recarregar, ele limpa a página visível e a reconstrói aparentemente do zero, onde o FF e o chrome esperam até que eles obtenham os novos ativos e os reconstruam se forem diferentes.
Uma diferença no Firefox (12.0) é que, em uma página renderizada a partir de um POST, reload () exibirá um aviso e fará uma nova publicação, enquanto uma atribuição de URL fará um GET.
O Google Chrome faz um GET para ambos.
Usando o JSF, agora estou tendo o problema de atualização após o término da sessão: PrimeFaces ViewExpiredException após o recarregamento da página e, com alguma investigação, encontrei uma diferença no FireFox:
Chamar window.location.reload()funciona como clicar no ícone de atualização no FF, adiciona a linha
Cache-Control max-age=0
enquanto a configuração window.location.hreffunciona como pressionar ENTER na linha da URL, ela não envia essa linha.
Embora ambos sejam enviados como GET, o primeiro (recarregar) está restaurando os dados anteriores e o aplicativo está em estado inconsistente.
da minha experiência de cerca de 3 anos, não encontrei nenhuma diferença ...
edit: sim, como um deles disse aqui, apenas passar um parâmetro booleano para window.location.reload () é a diferença. se você passar true , o navegador carrega uma página nova, mas se false , a versão do cache é carregada ...
No nosso caso, queremos apenas recarregar a página na visualização na web e, por alguns motivos, não conseguimos descobrir o porquê! Tentamos quase todas as soluções que estiveram na Web, mas continuamos sem recarregar usando location.reload () ou soluções alternativas como window.location.reload (), location.reload (true), ...!
Aqui está a nossa solução simples:
Basta usar uma tag <a> com o valor de atribuição "href" vazio como este:
< a href="" ...>Click Me</a>
(em alguns casos, você deve usar "return true" no clique do destino para ativar a recarga)
Para mais informações, consulte esta pergunta: Um href vazio é válido?
window.location.href, isso salvou minha vida na webview do Android 5.1. A página não é recarregada com location.reload () nesta versão do Android.