Link para recarregar a página atual

175

É possível ter um link normal apontando para o local atual?

No momento, encontrei duas soluções, mas uma delas inclui JavaScript e, na outra, você precisa conhecer o caminho absoluto da página:

<a href="#" onclick="window.location.reload(true);">1</a>
<a href="/foobar/">2</a>
<a href="#">3 (of course not working)</a>

Existe alguma maneira de fazer isso, sem usar JavaScript ou conhecer o caminho absoluto?

Tyilo
fonte

Respostas:

198

Eu tenho usado:

<a href=".">link</a>

Ainda não foi encontrado um caso e / ou navegador em que ele não funcione conforme o esperado.

Período significa o caminho atual. Você também pode usar ..para se referir à pasta acima do caminho atual, por exemplo, se você tiver esta estrutura de arquivo:

page1.html
folder1
    page2.html

Você pode então page2.htmlescrever:

<a href="../page1.html">link to page 1</a>

EDITAR:

Não tenho certeza se o comportamento mudou ou se sempre foi assim, mas o Chrome (e talvez outros) tratará os períodos descritos acima em relação a diretórios , não a arquivos. Isso significa que se você está http://example.com/foo/bar.htmlrealmente no diretório /foo/e um hrefvalor de .in bar.htmlse referirá ao /foo/invés debar.html

Pense nisso como navegar no sistema de arquivos em um terminal; você nunca pode cdentrar em um arquivo :)

EDIT 2:

Parece que o comportamento do uso href="."não é mais tão previsível, tanto o Firefox quanto o Chrome podem ter mudado a maneira como lidam com isso. Eu não confiaria inteiramente na minha resposta original, mas tente a sequência vazia e o período em diferentes navegadores para seu uso específico e verifique se obtém o comportamento desejado.

Markus Amalthea Magnuson
fonte
25
Deve-se notar, porém, que os dados GET não são preservados com esse método, considere-o um "recarregamento total". O uso de um valor href vazio preservará os dados GET, mas limpará o valor do hash (como #these). Usando # ou? como o valor href adicionará "lixo" ao novo URL. Descobri que usar período é a maneira mais limpa de obter uma recarga.
Markus Amalthea Magnuson
5
Essa técnica não está funcionando para mim no mac chrome. Embora esteja usando "." como anhor, ele se comporta como se ".." e links para a página pai. por exemplo, / admin / stuff se torna / admin. Mais alguém está vendo esse comportamento?
Zac
3
Esta solução está errada. Também no Chrome não funciona e aponta para o diretório pai. Você deve usar href vazio como o @MarkusAmaltheaMagnuson sugere
coorasse
8
Isso parece funcionar apenas se o componente de caminho da URL terminar com a /.
Kos
6
Atualmente, isso não funciona no Firefox ou Chrome. Ambos os navegadores referenciam o diretório pai (não a página atual) usando href = "."
jtubre
135

Nenhuma das outras respostas preservará nenhum valor da string de consulta. Experimentar

<a href="javascript:window.location.href=window.location.href">

É certo que isso envolve javascript, mas, a menos que seus usuários tenham o script desativado, isso é bastante simples.

Simon Molloy
fonte
5
Não funciona para mim (Google Chrome 32). Eu prefiro <a href="javascript:location.reload();"> </a>
Gabriel
3
Estou usando o Google Chrome 36.0.1985 e o javascript: window.location.href = window.location.href funciona. location.reload () tem o efeito infeliz de solicitar ao usuário se ele deseja atualizar a página no Firefox e, dependendo do cenário, pode não fornecer o resultado desejado. Consulte stackoverflow.com/questions/2405117/… para obter mais discussões.
18714 Simon Molloy
1
Estou usando angular com roteamento. Isto não funcionou para mim. No entanto, isso funciona -> <a href="javascript:"> click me </a>
John Henckel
E se o js estiver desativado?
5
Esta solução não preserva âncoras
thomas.winckell
77

Uma maneira usando javascript:

<a href="javascript:window.location.reload(true)">Reload</a>
Vinay Sahni
fonte
4
Preserva cadeias de consulta e âncoras ( ?query=string#anchor). Ótimo!
analog-nico
Acabei usando esta resposta porque a posição de rolagem também é mantida. Útil se você estiver usando uma recarga como um botão pseudo "desfazer".
Igneosaur
Esta solução funciona no cliente React
Andrius
você poderia elaborar como usar isso na sintaxe html?
Joanna Mikalai
Eu tenho uma pergunta, o trueparâmetro é realmente o que você deve usar para esse problema ao usar o window.location.reloadmétodo? Isso tornará uma atualização difícil que evita puxar do cache, o que pode ser o que você deseja em algumas circunstâncias, mas eu acho que na maioria das situações você gostaria de tirar proveito do cache, não é?
Stephen M Irving
31

Você poderia fazer isso: <a href="">This page</a>

mas acho que não preserva os dados GET e POST.

Stephen
fonte
3
Infelizmente, ele não funciona no IE. De: msdn.microsoft.com/en-us/library/cc848861%28v=vs.85%29.aspx - Se o HREF for especificado como um valor em branco (href = "" ou href =), a execução do link poderá exibir o diretório que contém o documento atual ou pode gerar um erro, dependendo de outros elementos no documento e no ambiente do servidor.
Bohdan Lyzanets
12
<a href="<?php echo $_SERVER["REQUEST_URI"]; ?>">Click me</a>
Hatzegopteryx
fonte
12
Eu não estou usando PHP.
Tyilo
3
Percebeu o -1, pode não ser a solução no seu caso (porque é uma solução php), mas acho que é a solução mais limpa aqui. Isso porque atribui um valor válido ao atributo href, é o mais limpo. Se possível, evite o javascript. Então, +1.
Rafavadeka # 5/13
ty muito útil. Por que isso está dando o polegar para baixo? A pergunta original não menciona js quer ea maioria dos q está aqui fazem referência JS ...
Andrew
@ Andrew, a pergunta original está marcada com #html e #hyperlink. Embora seja verdade que "um link normal apontando para o local atual" é uma descrição incrivelmente vaga, tenho certeza de que pode ser razoavelmente interpretado como buscando uma solução somente para o cliente. Uma âncora em que o href é preenchido pelo PHP não é um "link normal", é um código PHP.
endêmico
@endemic Sugerir que o javascript é "normal" e o php não é uma opinião inútil. O OP realmente define normal como não incluindo javascript e não usando um caminho absoluto. Curiosamente, a maioria das respostas está em javascript.
Andrew
10

use isso para recarregar / atualizar a página atual

<a href="#" onclick="window.location.reload(true);">

ou use

<a href="">refresh</a>
Kaushik
fonte
9
<a href=".">refresh current page</a>

ou se você deseja passar parâmetros:

<a href=".?curreny='usd'">refresh current page</a>
Abie Abby Del Ray
fonte
7

<a href="https://stackoverflow.com/">Clicking me refreshes the page</a>

<a href="?">Click Me To Reload the page</a>

Thomas Shields
fonte
3
isto só funciona se você estiver em index.html ou outro doc root / url
Stephen
@ Stephen, é claro. Você está certo. Aparentemente, estou mais enferrujado do que pensei. Acabei de testá-lo muito rápido e passou a estar na raiz.
Thomas Shields
Funciona muito bem quando url é por exemplo. / blablabla considerando. me traria de volta à raiz.
Augustin Riedinger 30/03
6

Infelizmente, não há uma maneira global de fazer isso apenas com HTML. Você pode tentar fazer, <a href="">test</a>no entanto, ele só funciona em alguns navegadores.

Michael Walsh
fonte
Não funciona no IE. De: msdn.microsoft.com/en-us/library/cc848861%28v=vs.85%29.aspx - Se o HREF for especificado como um valor em branco (href = "" ou href =), a execução do link poderá exibir o diretório que contém o documento atual ou pode gerar um erro, dependendo de outros elementos no documento e no ambiente do servidor.
Bohdan Lyzanets
1
Eu testei e funciona em todos os principais navegadores modernos (Chrome, Firefox, EDGE, Opera, Safari)
Pato Donald
5

URL completamente idempotente que preserva caminho, parâmetros e âncora.

 <a href="javascript:"> click me </a>

ele usa apenas um pouquinho de JS.

EDIT: isso não recarrega a página. É um link que não faz nada.

John Henckel
fonte
@FranciscoCorralesMorales, Desculpe, mas acho que não entendi a pergunta. Eu pensei que o OP estava tentando fazer um link que não faz nada. Mas agora vejo que o OP quer um link que recarregue a página atual. (Eu vou editar).
21716 John Henckel
Obrigado por este trecho de código, que pode fornecer ajuda imediata. Uma explicação adequada melhoraria bastante seu valor educacional, mostrando por que essa é uma boa solução para o problema e a tornaria mais útil para futuros leitores com perguntas semelhantes, mas não idênticas. Por favor edite sua resposta para adicionar explicação, e dar uma indicação do que limitações e premissas se aplicam.
precisa
3

tente isto

<a href="javascript:window.location.href=window.location.href">
Love Kumar
fonte
e onde você coloca o #?
FlowUI. SimpleUITesting.com 07/11/19
@ iOSCalendarpatchthecode.com por que você quer colocar # ?? isto é para recarregar a página.
Love Kumar
ignore meu comentário. Eu cometi um erro.
FlowUI. SimpleUITesting.com 11/11/19
2

Enquanto a resposta aceita não funcionou para mim no IE9, isso aconteceu:

<a href="?">link</a>
Marca
fonte
1
Acho que isso não funcionará se você estiver interessado em preservar os parâmetros da string de consulta.
WynandB
1
@WynandB está correto. isso descartará todos os parâmetros GET e POST. se é isso que você quer ou se não se importa, esse truque funciona muito bem.
hanshenrik
2

Mais uma solução

<a href="javascript:history.go(0)">Reload</a>
SashaPinsk
fonte
Boa solução! Uma pequena dica para esse método é 0 é o parâmetro padrão; portanto, se você estiver tentando recarregar, basta escrever: history.go()sem argumento.
Stephen M Irving
2
<a href="">Refresh!</a>

Deixe o href=""espaço em branco e ele atualizará a página.
Também funciona se algumas informações forem passadas usando formulários.

tarun
fonte
0

Eu uso o JS para mostrar apenas a div com um ID específico na página de tags em um site de risco. Com um conjunto de links na mesma página, você mostra o elemento correspondente:

function hide_others() {
    $('div.item').hide();
    selected = location.hash.slice(1);
    if (selected) {
        $('#' + selected).show();
    }
    else {
    $('div.item').show();
    }
}

links usam links como:

<a href="javascript:window.location.href='/tags.html#{{ tag[0] }}-ref'; hide_others()">{{ tag[0] }}</a>
David Villa
fonte
0

Você pode usar um formulário para executar um POST no mesmo URL.

 <form  method="POST" name="refresh" id="refresh">
 <input type="submit" value="Refresh" />
 </form>

Isso fornece um botão que atualiza a página atual. É um pouco chato, porque se o usuário pressionar o botão de atualização do navegador, ele receberá uma do you want to resubmit the formmensagem.

Tim Bray
fonte
0

Eu estou usando HTML para resolver este problema
Use:

<a href="page1.html"> Link </a>

* page1.html -> digite o nome do arquivo em que você está trabalhando (seu arquivo HTML atual)

Ayush Kumar
fonte
Edite a postagem. Não está claro qual linguagem de programação você está usando, como você tentou implementar o código e assim por diante.
Roee Anuar
Eu usei HTML para fazer esta tarefa.
Ayush Kumar
-1
<a href="/">Same domain, just like refresh</a>

Parece funcionar apenas se o site for index.html, index.htm ou index.php (qualquer página padrão).

Mas parece que .é a mesma coisa e mais aceito

<a href=".">Same domain, just like refresh, (more used)</a>

Ambos funcionam perfeitamente no Chrome quando o domínio é ao mesmo tempo http://ehttps://

SSpoke
fonte
-2

<a href="https://stackoverflow.com/home" target="_self">Reload the page</a>

Pramodh
fonte
O problema é se nós não sabemos o url ... target = "_ self" pode ser omitido
Hafenkranich
-3

Se você estiver usando modelos php / smarty, você pode fazer algo assim:

<a href="{{$smarty.server.REQUEST_URI}}{if $smarty.server.REQUEST_URI|strstr:"?"}&{else}?{/if}newItem=1">Add New Item</a>
Andrew
fonte
-4

Basta adicionar target = "_ blank" e o link abrirá uma nova página mantendo a página original.

ciccio
fonte
Como você diz, isso abrirá qualquer página especificada no hrefatributo em uma nova janela / guia. Isso não responde de forma alguma à pergunta real.
Philip Stratford