Link zum erneuten Laden der aktuellen Seite

175

Ist es möglich, dass ein normaler Link auf den aktuellen Standort verweist?

Ich habe derzeit 2 Lösungen gefunden, aber eine davon enthält JavaScript und die andere muss den absoluten Pfad zur Seite kennen:

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

Gibt es eine Möglichkeit, dies zu tun, ohne JavaScript zu verwenden oder den absoluten Pfad zu kennen?

Tyilo
quelle

Antworten:

198

Ich habe verwendet:

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

Ich habe noch keinen Fall und / oder Browser gefunden, in dem es nicht wie beabsichtigt funktioniert.

Punkt bedeutet den aktuellen Pfad. Sie können auch ..auf den Ordner über dem aktuellen Pfad verweisen, wenn Sie beispielsweise über diese Dateistruktur verfügen:

page1.html
folder1
    page2.html

Sie können dann page2.htmlschriftlich schreiben:

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

BEARBEITEN:

Ich bin nicht sicher, ob sich das Verhalten geändert hat oder ob es immer so war, aber Chrome (und möglicherweise andere) behandelt Zeiträume wie oben beschrieben in Bezug auf Verzeichnisse und nicht auf Dateien. Dies bedeutet, dass Sie sich, wenn Sie gerade http://example.com/foo/bar.htmlsind, wirklich im Verzeichnis befinden /foo/und ein hrefWert von .in eher auf als bar.htmlverweist/foo/bar.html

Stellen Sie sich das als Navigation im Dateisystem in einem Terminal vor. Sie können nie cdin eine Datei :)

EDIT 2:

Es scheint, dass das Nutzungsverhalten href="."nicht mehr so ​​vorhersehbar ist. Sowohl Firefox als auch Chrome haben möglicherweise geändert, wie sie damit umgehen. Ich würde mich nicht ganz auf meine ursprüngliche Antwort verlassen, sondern sowohl die leere Zeichenfolge als auch den Punkt in verschiedenen Browsern für Ihre spezifische Verwendung ausprobieren und sicherstellen, dass Sie das gewünschte Verhalten erhalten.

Markus Amalthea Magnuson
quelle
25
Es sollte jedoch beachtet werden, dass GET-Daten mit dieser Methode nicht erhalten bleiben. Betrachten Sie sie als "hartes Neuladen". Bei Verwendung eines leeren href-Werts bleiben die GET-Daten erhalten, der Hash-Wert wird jedoch gelöscht (wie bei #these). Verwenden von # oder? Als href-Wert wird der neuen URL "Garbage" hinzugefügt. Ich habe festgestellt, dass die Verwendung von Punkt der sauberste Weg ist, um ein Nachladen zu erreichen.
Markus Amalthea Magnuson
5
Diese Technik funktioniert bei Mac Chrome nicht. Obwohl mit "." Als Anhor verhält es sich wie ".." und verlinkt auf die übergeordnete Seite. zB / admin / stuff wird / admin. Hat noch jemand dieses Verhalten gesehen?
Zac
3
Diese Lösung ist falsch. Auch in Chrome funktioniert nicht und zeigen Sie auf das übergeordnete Verzeichnis. Sie sollten leere href verwenden, wie @MarkusAmaltheaMagnuson vorschlägt
Coorasse
8
Dies scheint nur zu funktionieren, wenn die Pfadkomponente der URL mit einem endet /.
Kos
6
Ab heute funktioniert dies nicht in Firefox oder Chrome. Beide Browser verweisen mit href = "." Auf das übergeordnete Verzeichnis (nicht auf die aktuelle Seite).
Jtubre
135

Keine der anderen Antworten enthält Abfragewerte. Versuchen

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

Dies beinhaltet zwar Javascript, aber wenn Ihre Benutzer das Skript nicht deaktiviert haben, ist dies ziemlich einfach.

Simon Molloy
quelle
5
Funktioniert bei mir nicht (Google Chrome 32). Ich bevorzuge <a href="javascript:location.reload();"> </a>
Gabriel
3
Ich verwende Google Chrome 36.0.1985 und Javascript: window.location.href = window.location.href funktioniert. location.reload () hat den unglücklichen Effekt, dass der Benutzer aufgefordert wird, die Seite in Firefox zu aktualisieren, und je nach Szenario möglicherweise nicht das gewünschte Ergebnis liefert. Weitere Informationen finden Sie unter stackoverflow.com/questions/2405117/… .
Simon Molloy
1
Ich benutze Winkel mit Routing. Das hat bei mir nicht funktioniert. Dies funktioniert jedoch -> <a href="javascript:"> click me </a>
John Henckel
Was ist, wenn js deaktiviert ist?
5
Diese Lösung bewahrt keine Anker
thomas.winckell
76

Eine Möglichkeit mit Javascript:

<a href="javascript:window.location.reload(true)">Reload</a>
Vinay Sahni
quelle
4
Erhält Querringe und Anker ( ?query=string#anchor). Toll!
Analog-Nico
Ich habe diese Antwort letztendlich verwendet, weil die Bildlaufposition ebenfalls beibehalten wird. Nützlich, wenn Sie ein Neuladen als Pseudo-Schaltfläche "Rückgängig" verwenden.
Igneosaurier
Diese Lösung funktioniert auf React Client
Andrius
Könnten Sie bitte näher erläutern, wie dies in der HTML-Syntax verwendet wird?
Joanna Mikalai
Ich habe eine Frage, ist der trueParameter wirklich das, was Sie für dieses Problem bei der Verwendung der window.location.reloadMethode verwenden sollten? Das macht es zu einer harten Aktualisierung, die das Abrufen aus dem Cache vermeidet, was unter bestimmten Umständen das sein kann, was Sie möchten, aber ich würde denken, dass Sie in den meisten Situationen den Cache nutzen möchten, nicht wahr?
Stephen M Irving
31

Sie könnten dies tun: <a href="">This page</a>

Ich glaube jedoch nicht, dass GET- und POST-Daten erhalten bleiben.

Stephen
quelle
3
Leider funktioniert es im IE nicht. Von: msdn.microsoft.com/en-us/library/cc848861%28v=vs.85%29.aspx - Wenn HREF als leerer Wert angegeben ist (href = "" oder href =), wird beim Ausführen des Links möglicherweise Folgendes angezeigt Verzeichnis, das das aktuelle Dokument enthält, oder es kann einen Fehler erzeugen, abhängig von anderen Elementen im Dokument und der Serverumgebung.
Bohdan Lyzanets
12
<a href="<?php echo $_SERVER["REQUEST_URI"]; ?>">Click me</a>
Hatzegopteryx
quelle
12
Ich benutze kein PHP.
Tyilo
3
Bemerkt die -1, ist möglicherweise nicht die Lösung in Ihrem Fall (weil es eine PHP-Lösung ist), aber ich denke, es ist die sauberste Lösung hier. Da das href-Attribut einen gültigen Wert erhält, ist es das sauberste. Vermeiden Sie nach Möglichkeit Javascript. Also +1.
Rofavadeka
sehr hilfreich. Warum Daumen runter? Die ursprüngliche Frage erwähnt auch js nicht und die meisten q beziehen sich hier auf JS ...
Andrew
@ Andrew Die ursprüngliche Frage ist mit #html und #hyperlink markiert. Zwar ist "ein normaler Link, der auf den aktuellen Standort verweist" eine unglaublich vage Beschreibung, aber ich bin mir ziemlich sicher, dass dies vernünftigerweise als Suche nach einer Lösung nur für den Kunden interpretiert werden kann. Ein Anker, bei dem die href von PHP gefüllt wird, ist kein "normaler Link", sondern PHP-Code.
endemisch
@endemic Javascript vorzuschlagen ist "normal" und PHP ist keine sinnlose Meinung. Das OP definiert normal als nicht mit Javascript und ohne Verwendung eines absoluten Pfads. Interessanterweise sind die meisten Antworten in Javascript.
Andrew
10

Verwenden Sie diese Option zum Neuladen / Aktualisieren der aktuellen Seite

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

oder verwenden

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

oder wenn Sie Parameter übergeben möchten:

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

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

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

Thomas Shields
quelle
3
Dies funktioniert nur, wenn Sie auf index.html oder einem anderen Root-Dokument / URL sind
Stephen
@ Stephen natürlich. Du liegst richtig. Anscheinend bin ich rostiger als ich dachte. Ich habe es gerade sehr schnell getestet und war zufällig auf der Wurzel.
Thomas Shields
Funktioniert sehr gut, wenn URL zB ist. / blablabla während. würde mich zurück zur Wurzel bringen.
Augustin Riedinger
6

Es gibt leider keine globale Möglichkeit, dies nur mit HTML zu tun. Sie können dies versuchen, <a href="">test</a>es funktioniert jedoch nur in einigen Browsern.

Michael Walsh
quelle
Es funktioniert nicht im IE. Von: msdn.microsoft.com/en-us/library/cc848861%28v=vs.85%29.aspx - Wenn HREF als leerer Wert angegeben ist (href = "" oder href =), wird beim Ausführen des Links möglicherweise Folgendes angezeigt Verzeichnis, das das aktuelle Dokument enthält, oder es kann einen Fehler erzeugen, abhängig von anderen Elementen im Dokument und der Serverumgebung.
Bohdan Lyzanets
1
Ich habe getestet und es funktioniert in allen gängigen modernen Browsern (Chrome, Firefox, Edge, Opera, Safari)
Donald Duck
5

Vollständig idempotente URL, die Pfad, Parameter und Anker beibehält.

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

Es wird nur ein kleines bisschen JS verwendet.

BEARBEITEN: Dadurch wird die Seite nicht neu geladen. Es ist ein Link, der nichts tut.

John Henckel
quelle
@FranciscoCorralesMorales, Entschuldigung, aber ich glaube, ich habe die Frage falsch verstanden. Ich dachte, das OP versucht, einen Link herzustellen, der nichts bewirkt. Aber jetzt sehe ich, dass das OP einen Link will, der die aktuelle Seite neu lädt. (Ich werde bearbeiten).
John Henckel
Vielen Dank für dieses Code-Snippet, das möglicherweise sofortige Hilfe bietet. Eine richtige Erklärung würde den Bildungswert erheblich verbessern , indem sie zeigt, warum dies eine gute Lösung für das Problem ist, und sie für zukünftige Leser mit ähnlichen, aber nicht identischen Fragen nützlicher machen. Bitte bearbeiten Sie Ihre Antwort, um eine Erklärung hinzuzufügen, und geben Sie an, welche Einschränkungen und Annahmen gelten.
Toby Speight
3

Versuche dies

<a href="javascript:window.location.href=window.location.href">
Liebe Kumar
quelle
und wo legst du das # hin?
FlowUI. SimpleUITesting.com
@ iOSCalendarpatchthecode.com warum willst du # setzen? Dies ist für das Neuladen der Seite.
Liebe Kumar
ignoriere meinen Kommentar. Ich machte einen Fehler.
FlowUI. SimpleUITesting.com
2

Während die akzeptierte Antwort in IE9 für mich nicht funktionierte, tat dies:

<a href="?">link</a>
Kennzeichen
quelle
1
Ich denke nicht, dass dies funktionieren wird, wenn Sie daran interessiert sind, Querystring-Parameter beizubehalten.
WynandB
1
@WynandB ist korrekt. Dadurch werden alle GET- und POST-Parameter gelöscht. Wenn Sie das wollen oder es Ihnen egal ist, funktioniert dieser Trick jedoch hervorragend.
Hanshenrik
2

Noch eine Lösung

<a href="javascript:history.go(0)">Reload</a>
SashaPinsk
quelle
Gute Lösung! Ein kleiner Tipp für diese Methode ist 0 als Standardparameter. Wenn Sie also versuchen, neu zu laden, können Sie einfach schreiben: history.go()ohne Argument.
Stephen M Irving
2
<a href="">Refresh!</a>

Lassen Sie das href=""Feld leer und die Seite wird aktualisiert.
Funktioniert auch, wenn einige Informationen mithilfe von Formularen übergeben werden.

Tarun
quelle
0

Ich benutze JS, um nur das Div mit einer bestimmten ID auf der Tags-Seite einer Jekyll-Site anzuzeigen. Mit einer Reihe von Links auf derselben Seite zeigen Sie das entsprechende Element an:

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

Links verwenden Links wie:

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

Sie können ein Formular verwenden, um einen POST an dieselbe URL durchzuführen.

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

Dadurch erhalten Sie eine Schaltfläche, mit der die aktuelle Seite aktualisiert wird. Es ist etwas ärgerlich, denn wenn der Benutzer die Schaltfläche zum Aktualisieren des Browsers drückt, wird eine do you want to resubmit the formNachricht angezeigt .

Tim Bray
quelle
0

Ich verwende HTML, um dieses Problem zu lösen.
Verwendung:

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

* page1.html -> Geben Sie den Namen der Datei ein, an der Sie arbeiten (Ihre aktuelle HTML-Datei).

Ayush Kumar
quelle
Bitte bearbeiten Sie den Beitrag. Es ist nicht klar, welche Programmiersprache Sie verwenden, wie Sie versucht haben, den Code zu implementieren und so weiter.
Roee Anuar
Ich habe HTML verwendet , um diese Aufgabe zu erledigen.
Ayush Kumar
-1
<a href="/">Same domain, just like refresh</a>

Scheint nur zu funktionieren, wenn Ihre Website index.html, index.htm oder index.php ist (eine beliebige Standardseite).

Aber es scheint .dasselbe zu sein und mehr akzeptiert zu werden

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

Beide funktionieren perfekt in Chrome, wenn die Domain beide http://und isthttps://

SSpoke
quelle
-2

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

Pramodh
quelle
Das Problem ist, wenn wir nicht wissen, dass die URL ... target = "_ self" weggelassen werden kann
Hafenkranich
-3

Wenn Sie PHP / Smarty-Vorlagen verwenden, können Sie Folgendes tun:

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

Fügen Sie einfach target = "_ blank" hinzu und der Link öffnet eine neue Seite mit der ursprünglichen Seite.

ciccio
quelle
Wie Sie sagen, wird dadurch nur die im hrefAttribut angegebene Seite in einem neuen Fenster / einer neuen Registerkarte geöffnet. Dies beantwortet in keiner Weise die eigentliche Frage.
Philip Stratford