Wie man Javascript Dateien dynamisch einbindet habe ich schon vor einiger Zeit hier (sehr veraltet) und hier beschrieben. Manchmal wenn z.B. diverse Widgetfunktionen dynamisch geladen werden sollen, wäre ein wie aus PHP bekanntes include_once bzw. require_once nützlich.
Hier das Script
function include_once(src) { // hole alle vorhandenen Script-Elemente var scripts = document.getElementsByTagName('script'); if(scripts) { for(var k=0; k<scripts.length; k++) { // script schon geladen, abbrechen if(scripts[k].src == src) { return; } } } // script noch nicht geladen, binde es ein var script = document.createElement('script'); script.src = src; script.type = 'text/javascript'; (document.getElementsByTagName('HEAD')[0] || document.body).appendChild(script); } |
Der Aufruf ist selbsterklärend:
include_once('http://domain.tld/js/scriptfile.js'); // oder include_once('http://domain.tld/js/myscript.php'); // oder include_once('http://domain.tld/js/scriptlet.js?pram=23'); |
super script : )
es funktioniert im IE8, firefox 5, opera 11.
nur im aktuellen chrome läuft’s rudimentär. zwei scripte werden nur ausgeführt, obwohl laut chrome entwicklungstool alle scripte geladen sind.
hat chrome generell probleme beim dynamischen laden?
Wenn Chrome im Netzwerk-Tab anzeigt, dass ein Script geladen wurde und es keinen Fehler gab sollte eigentlich alles ok sein. Am besten du postest mal eine Testseite mit den Scripten, dann gucke ich mir das an.