RSS Feed

Javascript include once

20.08.2009 by naden

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');

2 Kommentare »

  1. comixz sagt:

    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?

  2. naden sagt:

    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.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>