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.