Javascript lädt die Seite mit dem Hashwert neu

79

Ich versuche, die Seite mit dieser Anweisung in einer externen Javascript-Datei nach einigen Prozessen zu aktualisieren.

window.location.href = window.location.href

Es lädt die Seite perfekt neu, aber ich möchte nach dem Neuladen zu dem bestimmten Speicherort scrollen. Also habe ich das auf die Seite gesetzt.

<a name="uploadImgSection"></a>

Und ändern Sie das Javascript in

window.location.href = window.location.href + "#mypara";

Dieser Code lädt / aktualisiert die Seite auch nicht neu

window.location.hash = "#uploadImgSection";
window.location.href = window.location.href;

Wenn ich das mache, wird die Seite überhaupt nicht neu geladen. Gibt es eine Möglichkeit, die Seite mit der Position der Bildlaufleiste neu zu laden?

Jonas T.
quelle
Verwenden Sie eine PHP-Datei, um zur neuen Seite umzuleiten?
Derek 16 會 功夫
Nein, nur HTML-Seite. Der Zweck besteht darin, die Seite nach dem Ausführen einiger Javascript-Funktionen zu aktualisieren und sie an die Position dieses Absatzes zurückzuscrollen.
Jonas T
1
Wie rufen Sie an window.location.href? Wenn Sie dies beim Laden der Seite tun und f5 drücken und Firefox verwenden (oder einen anderen Browser, der beim Aktualisieren vor dem f5 scrollt), könnte dies das Problem sein
ajax333221

Antworten:

157
window.location.href += "#mypara";
location.reload();

Fügen Sie zuerst den Hash hinzu und laden Sie dann die Seite neu. Der Hash bleibt dort und die Seite wird neu geladen.

Getestet, funktioniert.


ps: Wenn in der URL bereits ein Hash vorhanden ist, möchten Sie ihn möglicherweise direkt über location.hashanstelle von ändern .href.

Derek 朕 會 功夫
quelle
1
Eine andere Sache. Die Seite wurde zwar aktualisiert, enthält jedoch nach dem Neuladen Post-Daten. Wie kann ich diese reinigen? Diese Post-Daten hindern mich daran, die Datenzeile zu löschen.
Jonas T
Bitte lesen Sie dies. stackoverflow.com/questions/2405117/… Es enthält die POST-Daten, die mich daran hindern, andere Postback-Ereignisse durchzuführen.
Jonas T
Nun, ich weiß nicht viel über POST. Sie können jedoch eine neue Frage stellen, wenn Sie möchten.
Derek 16 會 功夫
1
Nun, ich musste endlich eine Abfragezeichenfolge verwenden. "window.location.href = url +" & action = reload ";". Überprüfen Sie die Aktionsabfragezeichenfolge in javascripot beim Laden der Seite und führen Sie Folgendes aus: "window.location.hash =" #uploadImgSection ";". Es ist nicht so, wie es funktionieren sollte, aber ich musste es so machen, damit es jetzt funktioniert.
Jonas T
@Derek 朕 會 功夫 du bist ein Genie :)
Attila Naghi
35

Ich wollte diese Frage aktualisieren, da ich festgestellt habe, dass bei Verwendung window.location.href += "#mypara"der Parameter der Parameter auch dann an die URL angehängt wird, wenn er vorhanden ist. Ich habe den besseren Weg gefunden, zu verwenden

window.location.hash = "#mypara"
location.reload();
ug_
quelle
25

Dies ist wirklich ein alter Beitrag, ich würde immer noch versuchen, mit der richtigen Kombination von Antworten zu antworten.

  1. location.reload()und location.reload(true)funktioniert wie F5 im Browser. Dadurch werden alle Formulardaten an den Server zurückgesendet, wenn dies zuvor geladen wurde.
  2. location.hrefDie Seite wird erst aktualisiert, wenn eine vom Browser erkannte URL-Änderung vorliegt. Eine Änderung des Hashs (#paramname) ist nicht für eine URL-Änderung geeignet, und daher funktioniert es nicht, dies nur zu tun location.href+="#paramname".

So location.href+="?anything#paramname"sollte laden Sie die Seite als eine neue Anforderung als ?anythingÄnderung der URL ist.

JayB
quelle
Gute Antwort. Hier ist eine gekochte Version: window.location = '<? Php echo $ _POST [' back ']?> & Rand =' + ((neues Datum ()). GetTime ()% 1000000000) + '# myhash';
Johan
4
Eine andere: location.href + = '& rand =' + Math.rand () + '# myhash';
Johan
IMO beantwortet dies die Frage am besten im Vergleich zu den anderen Beiträgen. Es ist keine Änderung des zugrunde liegenden Codes erforderlich, der beispielsweise als Teil einer Bibliothek geschrieben wurde.
thekingoftruth
1
Johan, Math.rand () sollte in Math.random () geändert werden
tomJO
Die nächstgelegene Antwort (vielleicht waren die anderen Antworten 2012 richtig, aber 2018 waren sie alle falsch), aber es besteht das Problem, dass dem Adressleistenverlauf des Benutzers Einträge hinzugefügt werden. Dies ist nicht gut, wenn Sie nur versuchen, eine Aktualisierung durchzuführen der gleiche Geschichtszustand ...
Glenn Maynard
0
var loc = location.hash;
location.hash = " ";
location.hash = loc;
Pandimanikandan A.
quelle
Nur-Code-Antworten sind nicht sehr nützlich. Was macht das? Warum funktioniert es?
random_user_name
-1

Versuche dies

           var urlString=window.location.href;
           var url=urlString.split("#")[0];
           window.location.href = url + "#mypara";
Hearaman
quelle
4
Dadurch wird die Seite auch überhaupt nicht neu geladen.
Jonas T
Nur "Versuchen Sie diesen" Code Antworten sind nicht sehr nützlich. Was macht es? Warum funktioniert es?
random_user_name
-1

Das hat bei mir funktioniert:

var tabValue = document.URL;
window.location = tabValue.substring(0, tabValue.lastIndexOf("#"));
window.location.hash = "#tabs-3"; //Whatever is your hash value
location.reload();
Amit
quelle
-1

Diese Arbeit für mich

window.location.href = baseUrl + "#/m/team";
 location.reload();
MK Shah
quelle
-1

Das hat bei mir funktioniert

$('body').on('click', '.className', function () {
    var data = $(this).attr('href');
    alert(data);
    window.location.reload();
});
Kailash Chandra Panigrahi
quelle
Dies scheint im Grunde ein längerer Weg zu sein, um das zu tun, was andere Antworten bereits tun, und ich glaube nicht, dass es den # myPara-Teil enthält, so dass es nicht so funktioniert, wie es das Originalplakat wünscht, obwohl Sie bitte die Antwort bearbeiten, um zu klären, ob Ich liege falsch.
blm