Link per ricaricare la pagina corrente


175

È possibile avere un collegamento normale che punta alla posizione corrente?

Al momento ho trovato 2 soluzioni, ma una include JavaScript e nell'altra devi conoscere il percorso assoluto della pagina:

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

Esiste un modo per farlo, senza utilizzare JavaScript o conoscere il percorso assoluto?

Risposte:


198

Ho usato:

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

Devo ancora trovare un caso e / o browser in cui non funziona come previsto.

Periodo indica il percorso corrente. Puoi anche usare ..per fare riferimento alla cartella sopra il percorso corrente, ad esempio, se hai questa struttura di file:

page1.html
folder1
    page2.html

È quindi possibile per page2.htmliscritto:

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

MODIFICARE:

Non sono sicuro se il comportamento sia cambiato o se sia sempre stato così, ma Chrome (e forse altri) tratterà i periodi sopra descritti per quanto riguarda le directory , non i file. Ciò significa che se ci http://example.com/foo/bar.htmlsei sei davvero nella directory /foo/e un hrefvalore di .in bar.htmlfarà riferimento /foo/piuttosto chebar.html

Pensalo come navigare nel file system in un terminale; non puoi mai cdentrare in un file :)

MODIFICA 2:

Sembra che il comportamento dell'utilizzo href="."non sia più così prevedibile, sia Firefox che Chrome potrebbero aver cambiato il modo in cui li gestiscono. Non mi affiderei completamente alla mia risposta originale, ma piuttosto provo sia la stringa vuota che il punto in diversi browser per il tuo uso specifico e assicurati di ottenere il comportamento desiderato.


25
Va notato, tuttavia, che i dati GET non vengono conservati con questo metodo, considerarli un "ricaricamento forzato". L'uso di un valore href vuoto conserverà i dati GET, ma cancella il valore hash (come #these). Usando # o? come valore href aggiungerà "immondizia" al nuovo URL. Ho scoperto che l'utilizzo del punto è il modo più pulito per ottenere una ricarica.
Markus Amalthea Magnuson,

5
Questa tecnica non funziona per me su Mac Chrome. Anche se si utilizza "." come anhor, si comporta come se ".." e si collega alla pagina principale. ad es. / admin / stuff diventa / admin. Qualcun altro vede questo comportamento?
Zac,

3
Questa soluzione è sbagliata. Anche in Chrome non funziona e punta alla directory principale. Dovresti usare href vuoto come suggerisce
@MarkusAmaltheaMagnuson

8
Questo sembra funzionare solo se il componente path dell'URL termina con a /.
Kos,

6
Ad oggi, questo non funziona in Firefox o Chrome. Entrambi i browser fanno riferimento alla directory principale (non alla pagina corrente) usando href = "."
jtubre,

135

Nessuna delle altre risposte preconfigura alcun valore di querystring. Provare

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

Certamente questo implica javascript ma, a meno che i tuoi utenti non abbiano lo script disabilitato, questo è piuttosto semplice.


5
Non funziona per me (Google Chrome 32). Preferisco <a href="javascript:location.reload();"> </a>
Gabriel

3
Sto usando Google Chrome 36.0.1985 e javascript: window.location.href = window.location.href funziona. location.reload () ha lo sfortunato effetto di chiedere all'utente se desidera aggiornare la pagina in Firefox e, a seconda dello scenario, potrebbe non fornire il risultato desiderato. Vedi stackoverflow.com/questions/2405117/… per ulteriori discussioni.
Simon Molloy,

1
Sto usando angolare con routing. Questo non ha funzionato per me. Tuttavia, questo funziona -> <a href="javascript:"> click me </a>
John Henckel il

Cosa succede se js è disabilitato?

5
Questa soluzione non conserva le ancore
thomas.winckell

77

Un modo usando javascript:

<a href="javascript:window.location.reload(true)">Reload</a>

4
Conserva stringhe e ancore ( ?query=string#anchor). Grande!
analog-nico,

Ho finito per usare questa risposta perché anche la posizione di scorrimento viene mantenuta. Utile se si utilizza una ricarica come pseudo pulsante "annulla".
igneosaur,

Questo sollution FUNZIONA sul client React
Andrius

potresti per favore approfondire su come usare questo nella sintassi HTML?
Joanna Mikalai,

Ho una domanda, il trueparametro è davvero quello che dovresti seguire per questo problema quando usi il window.location.reloadmetodo? Questo lo renderà un duro aggiornamento che evita di estrarre dalla cache, che potrebbe essere quello che vuoi in alcune circostanze, ma penso che nella maggior parte dei casi vorresti sfruttare la cache, vero?
Stephen M Irving,

31

Potresti farlo: <a href="">This page</a>

ma non credo che preservi i dati GET e POST.


3
Sfortunatamente, non funziona in IE. Da: msdn.microsoft.com/en-us/library/cc848861%28v=vs.85%29.aspx - Se HREF è specificato come valore vuoto (href = "" o href =), l'esecuzione del collegamento potrebbe visualizzare il directory contenente il documento corrente, oppure potrebbe generare un errore, a seconda di altri elementi nel documento e nell'ambiente server.
Bohdan Lyzanets,

12
<a href="<?php echo $_SERVER["REQUEST_URI"]; ?>">Click me</a>

12
Non sto usando PHP.
Tyilo,

3
Ho notato il -1, potrebbe non essere la soluzione nel tuo caso (perché è una soluzione php) ma penso che sia la soluzione più pulita qui. Questo perché dà un valore valido all'attributo href, è il più pulito. Se possibile, evitare javascript. Quindi +1.
rofavadeka,

molto utile. Perché questo abbassa i pollici? La domanda originale non menziona neanche js e la maggior parte di q qui fa riferimento a JS ...
Andrew

@Andrew la domanda originale è taggata con #html e #hyperlink. Sebbene sia vero che "un normale link che punta alla posizione corrente" è una descrizione incredibilmente vaga, sono abbastanza sicuro che possa essere ragionevolmente interpretato come alla ricerca di una soluzione solo sul lato client. Un'ancora in cui l'href è popolato da PHP non è un "collegamento normale" di alcun tratto, è il codice PHP.
endemico

@endemic Suggerire javascript è "normale" e php non è un'opinione inutile. L'OP in realtà definisce normale come non includere javascript e non usa un percorso assoluto. È interessante notare che la maggior parte delle risposte sono in JavaScript.
Andrew,

10

usalo per ricaricare / aggiornare la pagina corrente

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

o usare

<a href="">refresh</a>

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

o se si desidera passare i parametri:

<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
questo funziona solo se sei su index.html o altri documenti / url di root
Stephen,

@Stephen ovviamente. Hai ragione. Apparentemente sono più arrugginito di quanto pensassi. L'ho appena testato molto velocemente e mi è capitato di essere alla radice.
Thomas Shields,

Funziona molto bene quando url è ad es. / blablabla considerando che. mi riporta alla radice.
Augustin Riedinger,

6

Purtroppo non esiste un modo globale per farlo con solo HTML. Puoi provare a farlo <a href="">test</a>ma funziona solo in alcuni browser.


Non funziona in IE. Da: msdn.microsoft.com/en-us/library/cc848861%28v=vs.85%29.aspx - Se HREF è specificato come valore vuoto (href = "" o href =), l'esecuzione del collegamento potrebbe visualizzare il directory contenente il documento corrente, oppure potrebbe generare un errore, a seconda di altri elementi nel documento e nell'ambiente server.
Bohdan Lyzanets,

1
Ho testato e funziona con tutti i principali browser moderni (Chrome, Firefox, Edge, Opera, Safari)
Paperino

5

URL completamente idempotente che preserva il percorso, i parametri e l'ancora.

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

usa solo un pochino di JS.

EDIT: questo non ricarica la pagina. È un collegamento che non fa nulla.


@FranciscoCorralesMorales, scusa ma penso di aver frainteso la domanda. Pensavo che l'OP stesse cercando di creare un collegamento che non fa nulla. Ma ora vedo che l'OP vuole un link che ricarichi la pagina corrente. (Modificherò).
John Henckel,

Grazie per questo frammento di codice, che può fornire un aiuto immediato. Una spiegazione adeguata migliorerebbe notevolmente il suo valore educativo mostrando perché questa è una buona soluzione al problema e la renderebbe più utile ai futuri lettori con domande simili, ma non identiche. Si prega di modificare la risposta di aggiungere una spiegazione, e dare un'indicazione di ciò si applicano le limitazioni e le assunzioni.
Toby Speight,


2

Mentre la risposta accettata non ha funzionato per me in IE9, questo ha fatto:

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

1
Non penso che funzionerà se sei interessato a preservare i parametri di querystring.
WynandB,

1
@WynandB è corretto. questo eliminerà tutti i parametri GET e POST. se è quello che vuoi, o se non ti interessa, questo trucco funziona alla grande, però.
Hanshenrik,

2

Un'altra soluzione

<a href="javascript:history.go(0)">Reload</a>

Buona soluzione! Un piccolo suggerimento per quel metodo è 0 è il parametro predefinito, quindi se stai provando a ricaricare, potresti semplicemente scrivere: history.go()senza argomenti.
Stephen M Irving,

2
<a href="">Refresh!</a>

Lascia href=""vuoto e aggiornerà la pagina.
Funziona anche se alcune informazioni vengono passate utilizzando i moduli.


0

Uso JS per mostrare solo il div con un ID specifico nella pagina dei tag in un sito jekyll. Con una serie di collegamenti nella stessa pagina, mostri l'elemento corrispondente:

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

i collegamenti usano collegamenti come:

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

0

È possibile utilizzare un modulo per eseguire un POST con lo stesso URL.

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

Questo ti dà un pulsante che aggiorna la pagina corrente. È un po 'fastidioso perché se l'utente preme il pulsante di aggiornamento del browser, riceverà un do you want to resubmit the formmessaggio.


0

STO UTILIZZANDO HTML PER RISOLVERE QUESTO PROBLEMA
Utilizzare:

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

* page1.html -> digita il nome del file su cui stai lavorando (il tuo file HTML corrente)


Modifica il post. Non è chiaro quale linguaggio di programmazione stai usando, come hai provato ad implementare il codice e così via.
Roee Anuar

Ho usato HTML per fare questo compito.
Ayush Kumar,

-1
<a href="/">Same domain, just like refresh</a>

Sembra funzionare solo se il tuo sito web è index.html, index.htm o index.php (qualsiasi pagina predefinita).

Ma sembra che .sia la stessa cosa e più accettata

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

Entrambi funzionano perfettamente su Chrome quando il dominio è entrambi http://ehttps://


-2

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


Il problema è che se noi non conosciamo l'url ... target = "_ self" può essere ommited
Hafenkranich

-3

Se stai usando modelli php / smarty, potresti fare qualcosa del genere:

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

-4

Aggiungi target = "_ blank" e il link aprirà una nuova pagina mantenendo la pagina originale.


Come dici tu, questo aprirà qualsiasi pagina sia specificata hrefnell'attributo in una nuova finestra / scheda. Questo non risponde in alcun modo alla domanda reale.
Philip Stratford,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.