Rolf B: Chrome bindet Datei nicht ein, FF wohl

Beitrag lesen

Hallo Pit,

sind server-side includes (SSI) erlaubt? Das wäre vermutlich einfacher und sinnvoller als JS. Und statisch ist das im Wesentlichen auch.

Und wenn schon JS, dann…

  • solltest Du das Container-element mit HTML-Inhalt füllen und nicht ersetzen.
  • sollte ein custom attribute mit data- beginnen

Dann kannst Du mit querySelectorAll alle div mit data-include-html suchen. Die arbeitest Du in einer Schleife ab. Für jeden Treffer guckst Du, ob das div Kinder hat. Wenn nicht, lädst Du das Include und überschreibst den Inhalt.

Problem ist jetzt das asynchrone Verhalten von XMLHttpRequest. Wenn deine Schleife über die Include-Container fertig ist, sind es die Ajax-Requeste noch lange nicht. Vor allem deshalb nicht, weil der Browser nicht allzuviele davon gleichzeitig ausführt, die übrigen müssen warten. Du solltest pro gesendetem Request einen Zähler erhöhen, und pro empfangenem Request nach der Verarbeitung erniedrigen (nein, nicht demütigen!). Wird er null, startest Du mit setTimeout(funktion, 0) die Suche nach Include-Containern neu, damit Includes in Includes funktionieren.

Aber eigentlich wäre hier ein custom element <x-include src="..."/> eine prima Idee. Das ist viel expressiver und du hast mehr Spaß mit JavaScript 😂

Und deine Holde kapiert dann vermutlich gar nichts mehr. Probier's erstmal mit SSI bevor Du den Ajax-Hammer ziehst.

Rolf

--
sumpsi - posui - clusi