Importeren van meerdere .JS bestanden

Pagina: 1
Acties:

  • DeepFreeze.NL
  • Registratie: April 2006
  • Laatst online: 02-03 08:01
Ik maak door de enorme grootte van de gebruikte javascript in mijn website gebruik van meerdere .js bestanden. Nu krijg ik dus een lijst met bestanden die ik aan de website wil toevoegen d.m.v.
JavaScript:
1
<script type="text/javascript" src="/js/import.js"></script>
Nu wil ik deze lijst verkleinen tot 1 regel, zodat 1 javascript alle overige importeert.
Dit systeem wordt ook bij CSS gebruikt m.b.v. @import url("bestand.css");

Nu had ik op internet de volgende code gevonden:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var JSdocs = [
    'bestand1.js',
    'bestand2.js',
    'bestand3.js',
    'bestand4.js',
];

function loadJSFiles() {
    var head = document.getElementsByTagName("head")[0];
    for (var i=0; i<JSdocs.length; i++) {
        var script = document.createElement("script");
        script.setAttribute("type","text/javascript");
        script.setAttribute("src",JSdocs[i]);
        head.appendChild(script);
    }
}

window.onload = loadJSFiles;


Dit wil niet lukken. De javascript bestanden worden niet ingeladen. Wie ziet wat ik fout doe?

  • storeman
  • Registratie: April 2004
  • Nu online
volgens mij kan dit niet werken, omdat js wordt ingeladen en vervolgens uitgevoerd. Op dat moment ben je te laat voor het inladen van de andere files.

Het is me ooit wel eens gelukt, maar het is een aardige omweg om het te doen, staat me bij. Ik ga dit topic met interesse volgen....

"Chaos kan niet uit de hand lopen"


  • soulrider
  • Registratie: April 2005
  • Laatst online: 27-11-2017
vrij duidelijk lijkt me:

hier haal je we uit de subdir ./js
JavaScript:
1
<script type="text/javascript" src="/js/bestand.js"></script>
en hier niet
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var JSdocs = [
    'bestand1.js',
    'bestand2.js',
    'bestand3.js',
    'bestand4.js',
];

function loadJSFiles() {
    var head = document.getElementsByTagName("head")[0];
    for (var i=0; i<JSdocs.length; i++) {
        var script = document.createElement("script");
        script.setAttribute("type","text/javascript");
        script.setAttribute("src",JSdocs[i]);
        head.appendChild(script);
    }
}

window.onload = loadJSFiles;


Dit wil niet lukken. De javascript bestanden worden niet ingeladen. Wie ziet wat ik fout doe?
pas het even aan en dan vind je html-pagina zrs zel je .js-bestanden en kunnen ze ook geimporteerd worden.

ps: kan je niet iets doen zoals in php ?
gewoon 1.js includen in je html en die de rest laten linken ?

  • DeepFreeze.NL
  • Registratie: April 2006
  • Laatst online: 02-03 08:01
Dat komt omdat de bovenste regel code in index.html wordt uitgevoerd welke in de root staat. Die import.js wordt uit de js map gehaald. In die map staan dan de overige files. Ik heb het voor de zekerheid wel nog even een keer getest, maar ik behoud hetzelfde resultaat.

Kun je je eventuele oplossing in PHP nader toelichten?

P.s. het was misschien onduidelijk omdat de bestandsnaam eerst bestand.js was. Ik heb het nu aangepast naar import.js (zie startpost).

[ Voor 28% gewijzigd door DeepFreeze.NL op 16-11-2006 14:35 ]


  • DeepFreeze.NL
  • Registratie: April 2006
  • Laatst online: 02-03 08:01
Niemand? :'(

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 21:14
Niet getest ofzo, maar ik betwijfel of scripts die aan de header worden toegevoegd nadat het document geladen is wel worden ingevoegd. Volgens mij heb je meer kans dat het werkt als je de script tags gewoon at runtime in je header schrijft:
JavaScript:
1
2
3
4
5
6
7
8
9
10
var JSdocs = [
    'bestand1.js',
    'bestand2.js',
    'bestand3.js',
    'bestand4.js',
];

for (var i=0; i<JSdocs.length; i++) {
    document.write('<script type="text/javascript" src="js/' + JSdocs[i] +'">');
}

Regeren is vooruitschuiven

Pagina: 1