HTML mit JavaScript (jQuery) nachladen

Viktor Dite, Autor des Beitrags

Von - Publiziert in Webdevelopment Blog über MySQL & PHP
Dipl. Informatiker und Tech-Blogger seit 2006.


Edit 26.09.14: Dieser Beitrag braucht mal dringender Überarbeitung. Heute würde ich das nur noch mit einem $.ajax Aufruf machen, da sonst der PageSpeed in den Keller gehen kann. Asynchrones laden wär hier das Stichwort. Werde den Artikel heute Abend überarbeiten.

Manchmal ist es ganz nützlich den Inhalt einer HTML Seite extern nachzuladen. Beispielsweise ist es unheimlich nützlich, wenn eine vom Shop oder CMS losgelöste Landingpage (Startseite) hinundwieder mit frischem Inhalt versorgt werden will, die Quelldaten des Templates aber im Verzeichnisbaum in der Dunkelheit des Grabens verscharrt sind, oder dieser Inhalt von propriätär gestalteten Templates ferngehalten werden soll. Ist das Templatesystem bereits auf php basierend, ist es indes sehr leicht mit Hilfe eines includes HTML Inhalt nachzuladen.

<?php include('file.html'); ?>

Besteht das Templatesystem jedoch aus reinen HTML Dateien, wird es etwas komplizierter. Hier gibt es an sich wohl nur zwei Möglichkeiten: Server Side Includes (SSI) oder JavaScript. Da SSI nicht bei jedem Hoster funktioniert, besteht also im Prinzip nur die Möglichkeit über JavaScript. Mit Javascript lässt sich bspw. der Inhalt von div Elementen sehr einfach manipulieren und somit auch durch einen nachgeladenen Code ersetzen. Dazu stehen hier stellvertretend zwei divs mit je eigener ID, deren Inhalt beim laden der Seite per JS verändert wird

   
  <div id="teaserContent">alternative content</div>   
  <div id="teaserContent2">alternative content</div> 

Der alternative content ist dabei sehr wichtig, da sonst User ohne JavaScript an dieser Setlle nur ein weißes Feld ohne jeglichen Inhalt zu sehen bekämen. Der nachfolgende JavaScript Aufruf überschreibt dann den alternative content mit dem Dateien im angebenem Pfad. Er steht absichtlich nicht in einer document.ready() Umgebung, da der Inhalt möglichst schnell und vor dem rest der Seite nachgeladen werden soll.

 
<script type="text/javascript"> 
  $(function () {  
    $('#teaserContent').load('landingpage/teaser.html');      
    $('#teaserContent2').load('landingpage/teaser2.html'); 
  });  
</script> 

Anschließend sei noch geraten, die div Elemente mit der korrekten Größe von vornherein mittels CSS zu versehen, da sonst während des Nachladens die Elemente der Seite springen!


Letzte Änderung: