Auge: Ankerlink-Parameter in Adresszeile ausblenden?

Beitrag lesen

Hallo

Sobald man das Menü aktiviert, löst man einen Ankerlink aus (der öffnet das Menü gleichzeitig). Und damit wird der Ankerlink als Parameter an die originale URL (siehe Adresszeile im Browser) angehängt.

Technisch gesehen ist das natürlich alles korrekt. Aber es ist unkomfortabel. Warum? Wenn jemand draufklickt oder "toucht" und anschließend ein Bookmark setzt, wird der Ankerparameter ebenfalls mit gebookmarked, was irgendwie doof ist.

Ob dieses Verhalten doof ist, kommt auf den konkreten Fall an. Bei einer „normalen“ seiteninternen Navigation ermöglicht das Fragment/der Hash am Ende der URL das explizite Verlinken von Seitenabschnitten. Das ist im Normalfall so gewollt.

Bei einer Navigation, die mit einem Fragment auf- bzw. zugeklappt wird, sieht das anders aus. Das Menü muss bei einem Seitenaufruf aus einer weitergegebenen URL heraus im Normalfall nicht geöffnet werden. Bei einer von mir in eine Seite eingebaute Navigation nach diesem System, in der ausschließlich zu anderen Seiten verlinkt wird, habe ich die folgende, JS-basierte Lösung eingebaut.

Der Gedankengang war folgender: Wird aus der Navigation heraus eine neue Seite aufgerufen, bin ich das Fragment zum öffnen der Navigation los. Ich brauche also nur eine Lösung für den Fall, dass die Navigation ohne Seitenaufruf geschlossen wird. Dazu habe ich am Ende der Navigation einen passenden Link mit dem Ziel #top eingebaut. Dadurch ändert sich der Hash, was ich mit einem Eventlistener, der eine Funktion aufruft, prüfe. Heißt der Hash „#top“, wird er aus der URL entfernt.

function removeHash() {
	var locHash = window.location.hash;
	if (locHash === '#top') {
		history.replaceState("", document.title, window.location.pathname + window.location.search);
	}
}

window.addEventListener("hashchange", removeHash);

Das Fragment/der Hash zum Aufklappen der Navigation wird also durch den Linkaufruf mit „#top“ überschrieben und „#top“ selbst wird aus der URL entfernt. Das ist eine auch nur mit JS funktionierende Lösung für ein mMn allerdings auch nur kosmetisches Problem.

Tschö, Auge

--
Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
Toller Dampf voraus von Terry Pratchett