Hallo Rolf,
Ja. Das meiste, was Du da tust, geht heute auch mit vanilla DOM Methoden - außer der .siblings-Nummer. Aber dafür kann man zur Not auch ein Schleifchen klöppeln. Es ist aber deine Entscheidung, welchen Toolstack Du nutzen willst. Wenn du mit jQuery zufrieden bist, nimm es.
jQuery kann ich leichter nachvollziehen.
Statt $.ajax kannst Du auch das fetch-API benutzen, wenn Du auf den IE verzichten kannst.
Welchen Vorteil bietet das? Ist es schwierig? Schreibe ich dann einfach nur fetch(tabName) { $(".append").html(html); };
stattdessen hin?
Hier noch einmal der vollständige, funktionierende Code:
$(function () {
let currentHash = '';
window.addEventListener("hashchange", loadCurrentPage);
loadCurrentPage();
function loadCurrentPage() {
let newHash = window.location.hash;
let $newTab;
if (newHash.length == 0) {
$newTab = $("#tabs .tab:first-child");
newHash = $newTab.attr("href");
}
else {
$newTab = $("#tabs .tab[href="+CSS.escape(newHash)+"]");
if ($newTab.length == 0) {
// e r r o r
}
}
if (newHash != currentHash) {
currentHash = newHash;
$newTab.addClass("current").siblings().removeClass("current");
let tabName = newHash.substr(1);
$("main").attr("id", tabName);
$.ajax(tabName).then(function(html) { $(".append").html(html); });
}
}
});
Wofür ist denn in let tabName = newHash.substr(1);
das substr(1) da? Was würde passieren, wenn man den Teil weglässt?
Ich habe endlich das Grundprinzip von URL Parametern nachvollziehen können. Im Grunde können Variablen in der URL einen bestimmten PHP-Code auf der Seite auslösen.
In ganz einfacher Form habe ich mal eine Testseite erstellt: http://54598532.swh.strato-hosting.eu/
Im div mit der class append steht folgender PHP-Code:
<?php
if ($_GET['subpage'] == 'foo') {
$path = $_SERVER['DOCUMENT_ROOT']; $path .= "foo.php"; include($path);
} else if ($_GET['subpage'] == 'bar') {
$path = $_SERVER['DOCUMENT_ROOT']; $path .= "bar.php"; include($path);
} else { echo " Startseite "; }
?>
Seltsamerweise funktioniert das auf meinem lokalen Server, aber auf dem Strato-Server plötzlich nicht mehr. Hast du eine Ahnung, warum?
Dafür zeigt mir die Seite auf dem lokalen Server folgende Fehlermeldung an:
Warning: Undefined array key "subpage" in E:\Webseiten\games\index.php on line 37
Warning: Undefined array key "subpage" in E:\Webseiten\games\index.php on line 41
Auf dem Strato-Server hingegen erscheint diese Fehlermeldung nicht …
Edit: Es lag am Pfad. Ich musste ein slash bei /foo.php und /bar.php setzen, damit es den ROOT-Ordner anpeilt. Die Fehlermeldung auf dem lokalen Server bleibt aber.