Ich glaube dass es nur mit PHP und .htaccess geht.
Wenn ein User auf ein Link klickt, ändert sich auch das URL bzw "get". Bei Jquery oder JS wenn man get nimmt, ändert sich die URL nicht.
Ok machen wir es mal anders:
1. Es wird kein Link erstellt wie zb "https://example.com/autos".
2. Javascript funktioniert in der dynamisch geladenen Seite(Datei) nicht mehr.
3. Der "zurück Button" funktioniert nicht
Zu 1.: Bei dieser URL navigierst du eine Ressource an, die der Server aufzulösen versucht. Dazu benötigt er, wenn er per HTACCESS keine andere Anweisung bekommt, das Directory "autos" im Document-Root und in dieser sollte dann auch eine index.html liegen. Ist das nicht der Fall, dann geht das auch nicht.
Zu 2.: Javascript auf der dynamisch geladenen Seite funktioniert schon. Du darfst nur nicht vergessen, das die Anwendung an sich schon läuft und du deswegen ein wenig umdenken musst. Das berühmte Document-Ready ist da semioptimal, da das Dokument schon Ready war, bevor die dynamische Seite geladen wurde.
Zu 3.: Der Zurückbutton funktioniert nur, wenn sich die URL auch ändert. Der Back-Button bedient sich an der Historie der Navigation. Ohne abweichender URL gibt es auch keine Navigation.
Und genau aus diesen Gründen habe ich ja auch von Ankern gereden. Statt example.com/autos versuche es mal mit example.com/#autos und werte dies beim laden der Seite mit Javascript aus:
Code:
$(document).ready(function() {
var anker = location.hash.replace("#","");
$("main").load("/pages/" + anker + ".html");
});
Das habe ich jetzt nicht testen können. Müsste aber hinhauen. Das heißt nach Document-Ready fragst du direkt den Anker ab, lädst die Seite dynamisch nach und baust auch alle Links mit den Ankern auf. Dabei musst du allerdings beachten, das du auch das Navigieren über einen Anker mitbekommst. Dazu registrierst du am besten einen EventListener. In diesem Fall HashChange:
Code:
window.addEventListener('hashchange', function() {
var anker = location.hash.replace("#","");
$("main").load("/pages/" + anker + ".html");[
});
Natürlich solltest du abfragen, ob location.hash leer ist und dann eine Default-Seite laden. Genauso solltest du prüfen, ob der Ajax-Request einen gültigen Status zurückliefert. Wenn er 404 zurückliefert, solltest du also auch eine 404-Meldung hinneinladen, damit der Nutzer bescheid weiß. Ansonsten tappt der im dunkeln
