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?

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.


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.


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>

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.


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>

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>

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

oder wenn Sie Parameter übergeben möchten:

<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
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.


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.


@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


2

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

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

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>

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.


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>

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 .


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).


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


-2

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


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>

-4

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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.