Ich habe URL wie: http://example.com#something
wie kann ich die #something
ohne die Seite zu aktualisieren?
Ich habe die folgende Lösung versucht:
window.location.hash = '';
Das Rautensymbol wird dabei jedoch nicht entfernt #
aus der URL.
Ich habe URL wie: http://example.com#something
wie kann ich die #something
ohne die Seite zu aktualisieren?
Ich habe die folgende Lösung versucht:
window.location.hash = '';
Das Rautensymbol wird dabei jedoch nicht entfernt #
aus der URL.
Dadurch wird auch die abschließende Raute entfernt. z. B: http://test.com/123#abc -> http://test.com/123
if(window.history.pushState) {
window.history.pushState('', '/', window.location.pathname)
} else {
window.location.hash = '';
}
Wie wäre es mit dem Folgenden?
window.location.hash=' '
Bitte beachten Sie, dass ich den Hash auf ein einzelnes Leerzeichen und nicht auf eine leere Zeichenfolge setze.
Das Setzen des Hashes auf einen ungültigen Anker führt ebenfalls nicht zu einer Aktualisierung. Zum Beispiel,
window.location.hash='invalidtag'
Ich halte die obige Lösung jedoch für irreführend. Sie scheint zu suggerieren, dass es an der angegebenen Position einen Anker mit dem angegebenen Namen gibt, obwohl dies nicht der Fall ist. Gleichzeitig führt die Verwendung einer leeren Zeichenkette dazu, dass sich die Seite nach oben bewegt, was manchmal inakzeptabel sein kann. Die Verwendung eines Leerzeichens stellt außerdem sicher, dass die Seite beim Kopieren der URL, beim Setzen eines Lesezeichens und beim erneuten Aufrufen der Seite in der Regel an erster Stelle steht und das Leerzeichen ignoriert wird.
Und, hey, das ist meine erste Antwort auf StackOverflow. Ich hoffe, jemand findet sie nützlich und sie entspricht den Standards der Community.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.