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?

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.


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.


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>

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.


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>

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>

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

ou se você deseja passar parâmetros:

<a href=".?curreny='usd'">refresh current page</a>

7

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

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


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.


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.


@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


2

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

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

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>

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.


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>

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.


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)


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://


-2

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


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>

-4

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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.