433 Stimmen

Wie entfernt man den Hash aus window.location (URL) mit JavaScript ohne Seitenaktualisierung?

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.

3voto

<script type="text/javascript">
var uri = window.location.toString();
if (uri.indexOf("?") > 0) {
    var clean_uri = uri.substring(0, uri.indexOf("?"));
    window.history.replaceState({}, document.title, clean_uri);
}
</script>

diesen Code in den Kopfbereich einfügen

3voto

Konstantin Lekh Punkte 61

Ich denke, es wäre sicherer

if (window.history) {
    window.history.pushState('', document.title, window.location.href.replace(window.location.hash, ''));
} else {
    window.location.hash = '';
}

0voto

voscausa Punkte 10531

Hier ist eine andere Lösung, um die Position mit href zu ändern und die Raute ohne Scrollen zu löschen.

Die magische Lösung wird erklärt aquí . Spezifikationen aquí .

const hash = window.location.hash;
history.scrollRestoration = 'manual';
window.location.href = hash;    
history.pushState('', document.title, window.location.pathname);

HINWEIS: Die vorgeschlagene API ist jetzt Teil des WhatWG HTML Living Standard

0voto

Vishal Sharma Punkte 87

Versuchen Sie das Folgende:

window.history.back(1);

0voto

JohnMathew Punkte 490
$(window).on('hashchange', function (e) {
    history.replaceState('', document.title, e.oldURL);
});

CodeJaeger.com

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.

Powered by:

X