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.
Die Lösung dieses Problems ist heute viel leichter zu erreichen. Die HTML5 Geschichte API ermöglicht es uns, die Standortleiste so zu manipulieren, dass jede URL innerhalb der aktuellen Domäne angezeigt wird.
function removeHash () {
history.pushState("", document.title, window.location.pathname
+ window.location.search);
}
Arbeits-Demo: http://jsfiddle.net/AndyE/ycmPt/show/
Dies funktioniert in Chrome 9, Firefox 4, Safari 5, Opera 11.50 y im IE 10. Für nicht unterstützte Browser können Sie immer ein Skript schreiben, das diese Funktion nutzt, sofern sie verfügbar ist:
function removeHash () {
var scrollV, scrollH, loc = window.location;
if ("pushState" in history)
history.pushState("", document.title, loc.pathname + loc.search);
else {
// Prevent scrolling by storing the page's current scroll offset
scrollV = document.body.scrollTop;
scrollH = document.body.scrollLeft;
loc.hash = "";
// Restore the scroll offset, should be flicker free
document.body.scrollTop = scrollV;
document.body.scrollLeft = scrollH;
}
}
Sie können also das Rautensymbol loswerden, nur nicht in allen Browsern - noch nicht.
Hinweis: Wenn Sie die aktuelle Seite im Browserverlauf ersetzen möchten, verwenden Sie <code>replaceState()</code> 代わりに <code>pushState()</code> .
Erste Frage:
window.location.href.substr(0, window.location.href.indexOf('#'))
o
window.location.href.split('#')[0]
beide geben die URL ohne den Hash oder irgendetwas danach zurück.
In Bezug auf Ihre Bearbeitung:
Jede Änderung der window.location
wird eine Aktualisierung der Seite ausgelöst. Sie können ändern window.location.hash
ohne die Aktualisierung auszulösen (obwohl das Fenster springt, wenn Ihre Raute mit einer ID auf der Seite übereinstimmt), aber Sie können das Rautenzeichen nicht loswerden. Entscheiden Sie selbst, was schlimmer ist...
AKTUELLSTE ANTWORT
Die richtige Antwort auf die Frage, wie man das macht, ohne etwas zu opfern (entweder vollständig neu laden oder das Rautenzeichen stehen lassen), lautet hier unten . Ich lasse diese Antwort hier, weil sie die ursprüngliche Antwort aus dem Jahr 2009 ist, während die richtige Antwort, die neue Browser-APIs nutzt, 1,5 Jahre später gegeben wurde.
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.