Die Lösung dieses Problems ist heutzutage viel mehr in Reichweite. Die HTML5 History API ermöglicht es uns, die Adressleiste zu manipulieren, um eine beliebige URL innerhalb der aktuellen Domain anzuzeigen.
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 und in IE 10. Für nicht unterstützten Browser, können Sie immer einen anmutig erniedrigenden Skript schreiben das macht Gebrauch davon, wo verfügbar:
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;
}
}
So können Sie aus dem Hash-Symbol loszuwerden, nur nicht in allen Browsern — y et.
Hinweis: Wenn Sie die aktuelle Seite im Browserverlauf ersetzen möchten, verwenden Sie replaceState()
anstelle von pushState()
.
Wollen Sie das wirklich wollen, zu tun? Es wird eine Seitenaktualisierung verursachen. – seth
Kann auf eine Seitenaktualisierung verzichtet werden? –
Es * ist * möglich. AJAX History Libraries beschäftigen sich damit. Aber es ist nicht einfach, und es muss für fast jeden Browser anders gemacht werden. Nicht etwas, auf das du dich einlassen willst. –