Wie können Parameter in der URL entfernt und in der Adressleiste angezeigt werden, ohne eine Umleitung in Javascript zu verursachen?

8

Ich habe zahlreiche Antworten darauf gefunden, wie man die URL ohne die Parameter extrahiert.

Wie schreiben Sie die URL in der Adresszeile um, ohne dass die Seite mit der neuen URL neu geladen wird?

%Vor%

Das Ziel besteht darin, die Parameter in Javascript zu extrahieren, sie aber nicht in der Adressleiste anzuzeigen.

    
B Seven 14.12.2011, 19:51
quelle

5 Antworten

12

In modernen Browsern mit Unterstützung für das History-Objekt können Sie entweder history.replaceState() oder history.pushState() verwenden, um die aktuelle URL zu ändern, ohne die aktuelle Seite zu ändern. Es gibt Einschränkungen hinsichtlich der Möglichkeiten, die Sie ändern können (z. B. können Sie die Domäne / den Ursprung aus Sicherheitsgründen nicht auf diese Weise ändern).

Siehe hier für eine Zusammenfassung dieser Methoden.

Der Browserverlauf ist eine Aufzeichnung dessen, wo Sie sich in Ihrer Browsersitzung befanden. Mit .replaceState() können Sie das aktuelle Element in der Verlaufsliste durch ein anderes ersetzen. .pushState() fügt dem Browserverlauf ein neues Element hinzu und beide ändern die in der Browser-URL-Leiste angezeigte URL, ohne die Seite neu zu laden. Sie wählen die zu verwendende Methode aus, je nachdem, wie die Schaltfläche "Zurück" des Browsers für diesen bestimmten Seiteneintrag verwendet werden soll.

Hinweis: Diese APIs werden in IE 10 und höher unterstützt.

In älteren Browserversionen ohne Unterstützung für die Verlaufs-API kann der einzige Teil der URL, den Sie ohne erneutes Laden der Seite ändern können, das Hash-Tag (der Teil nach einem # -Zeichen) am Ende der URL sein.

    
jfriend00 14.12.2011, 19:54
quelle
6

In html5 ist das Umschreiben von URL ohne Neuladen der Seite möglich (Sie können den Domain-Namen aus Sicherheitsgründen immer noch nicht ändern). Mit history api können Sie schreiben:

%Vor%

in dem die ersten beiden Parameter irgendwie willkürlich sind, und der dritte Parameter ist die neue URL (ohne Domänennamen). Wenn Sie den Zurück-Button aktivieren möchten, um zur vorherigen URL zurückzukehren, verwenden Sie pushState anstelle von replaceState oben. Lesen Sie mehr über diese Funktionen in diesem Blogpost .

>

In Bezug auf die Browser-Unterstützung wird es in den letzten Versionen von Firefox und Chrome unterstützt, aber nur in IE10 +, was noch nicht sehr verbreitet ist. Für Details siehe Kompatibilitätsmatrix oder .

    
Amir Ali Akbari 20.01.2013 12:07
quelle
2

Sie können den Wert in der Adressleiste nicht ändern, ohne umgeleitet zu werden. Das wäre der Traum eines Phishing-Betrachters!

Sie können jedoch die Fragment-ID ändern: (in JavaScript der window.location.hash -Wert)

%Vor%

Wenn Sie jedoch die Abfragezeichenfolge ändern, wird die Seite umgeleitet.

    
Richard JP Le Guen 14.12.2011 19:57
quelle
1

Sie können möglicherweise den neuen Pushstate verwenden, der Teil der HTML 5-Verlaufs-API ist, mit der Sie die URL ändern können, ohne den Browser neu zu laden.

Ссылка für ein schnelles Beispiel und < a href="http://diveintohtml5.info/history.html"> Ссылка für ausführlichere Beispiele und Einschränkungen:

    
varfoo 14.12.2011 20:15
quelle
0

Ich denke nicht, dass es dafür eine Möglichkeit gibt. Ich meine, Sie könnten die URL nach dem Laden neu schreiben und return false hinzufügen, damit Sie das Reload verhindern, aber sonst müssten Sie ein Formular POST auf der URL machen um zu erreichen, dass kein Parameter angezeigt wird.

    
mas-designs 14.12.2011 19:54
quelle