Seit einiger Zeit kann ich mich nicht mehr dagegen wehren, dass immer mehr JavaScript in unsere Typo3 Projekt gepackt wird. Ich hatte immer gesagt, dass JS nur Spielerein ermöglicht und in einer seriösen Webseite nicht gebraucht wird. Meine Meinung hat sich da nicht wesendlich geändert, ich habe nur dem wachsenden Druck nachgegeben. Siehe unsere neue Seite für : Alpha Armouring.
Das Problem ist jedoch, dass die Webseiten nicht unbedingt schneller werden dadurch. Auch unser Statistik System wird über JS eingebunden und es frißt halt doch etwas Ladezeit. Im gegenteil sie werden teilweise sehr viel langsamer! Je umfangreicher der JavaScript Code der eingebunden werden muss, um so mehr wirkt sich das auf die Ladezeit aus. Natürlich ist es wichtig den Code und den JS-Code von Typo3 in externe Dateien auszulagern, damit der Browser den Code cachen kann. Schön wäre jedoch, wenn die Seite erst komplett geladen werden würde, bevor der Browser sich mit dem JavaScript Code abquälen muss. Also die Scripte unten am Ende der Seite einbinden. Das wird einem ja auch von YSlow im Firerfox immer wieder empfohlen.
Ich dachte schon, dass ich um das zu verwirklichen, alle meine Templates umschreiben müßte und dann explizit den Code für das Einbinden einfügen müßte. Das hatte mir nie zugesagt und ich wollte den bequemen Befehl page.includeJS nicht missen, der sich doch so schön in Browserweichen manipulieren läßt.
Bei einer Suche im Internet bin ich jedoch auf eine ganz einfache Lösung gestoßen! Es gibt neuerdings für Typo3 4.3 eine neue Anweisung für das PAGE Object: includeJSFooter! Sie funktioniert genauso wie includeJS, die JS Dateien werden jedoch erst kurz vor dem schliessenden </body> Tag gesetzt!
Das Umschreiben war somit ganz einfach. Ich mußte nur überall includeJS mit includeJSFooter ersetzen. Geht aber nur wenn die neueste Typo3 Version verwendet wird. Ich habe es in anderen Versionen versucht und hatte dann überhaupt keine JavaScript Dateien mehr eingebunden. Das hat unserem SEO mal wieder sehr misfallen, da dann seine Statistiken nicht mehr mitgeführt wurden.
Man muss die Seiten nacher aber gründlich testen. JavaScript unten in der Seite funktioniert nicht immer!
Bei einer meiner Seiten wurde dadurch das Menü nicht mehr angezeigt!