OVH Cloud OVH Cloud

inclusion de fichier .js

8 réponses
Avatar
dj daiwe
Bonjour,

Savez-vous s'il est possible d'inclure un fichier .js dans un autre comme on
peut le faire dans d'autre langage (style #include) ?

merci de votre aide

8 réponses

Avatar
ASM

Bonjour,

Savez-vous s'il est possible d'inclure un fichier .js


non,

on peut faire appel à un fichier externe en dehors des scripts JS

<script type="text/javascript" src="monfichier.js"></script>

dans le script pour faire un include il faut tricher :

document.write('<script type="text/javascript" src="monfichier.js"'+
'>'+'<'+'/script>');

Avatar
YD

Savez-vous s'il est possible d'inclure un fichier .js dans un autre comme on
peut le faire dans d'autre langage (style #include) ?


Non. Javascript (et Cie) n'est pas prévu pour être un langage de programmation
complet. C'est un langage de collage qui oeuvre toujours dans une application
hôte qui lui fournit des objets. À ce titre, il ne dispose d'aucun accès aux
fonctions du système d'exploitation. Il est tributaire pour cela de l'application
hôte, qui peut lui fournir des objets permettant de manipuler fichiers, affichage...

Si écrire deux -- ou plus -- balises <script> dans une page (qui se partageront de
toute façon les mêmes variables) ne suffit pas il y a la possibilité - si la
détermination du fichier à inclure se fait au chargement de la page de faire écrire
par le script une nouvelle balise script :
if (test1) document.write("<script src='script1.js'></script>");
else if (test2) document.write("<script src='script2.js'></script>");
//etc...
- si c'est après le chargement de la page, il est plus difficile d'y arriver. Pour les
navigateurs récents, en passant par les fonctions du DOM :
function include(srcFile){
var aJS = document.createElement("SCRIPT");
aJS.src = srcFile;
document.body.appendChild(aJS);
}
include("test1.js");
Mais il faudra avec un timeout tester que le script est bien chargé avant d'en utiliser
variables et fonctions.
Quant aux navigateurs anciens...

--
Y.D.

Avatar
david P.
merci ASM, merci YD pour les infos très précises, ça marche C cool...

"ASM" a écrit dans le message de news:


Bonjour,

Savez-vous s'il est possible d'inclure un fichier .js


non,

on peut faire appel à un fichier externe en dehors des scripts JS

<script type="text/javascript" src="monfichier.js"></script>

dans le script pour faire un include il faut tricher :

document.write('<script type="text/javascript" src="monfichier.js"'+
'>'+'<'+'/script>');



Avatar
Mokhet
ASM wrote:
dans le script pour faire un include il faut tricher :

document.write('<script type="text/javascript" src="monfichier.js"'+
'>'+'<'+'/script>');


ou le faire proprement :)

http://mokhet.com/js-test/inclusion.html

function JSinclude(url) {
var head = document.getElementsByTagName("head")[0];
var script = document.createElement("script");
script.type = "text/javascript";
script.src = url;
head.appendChild(script);
}

J'ai pas fait une tonne de test mais ça à l'air de tourner. Après on
peux peut etre s'amuser à rajouter le chargement des scripts dans une
file en attendant que le chargement des scripts précédents soients
terminés, mais là on part vraiment HS avec tout ce js :D

--
laurent
http://mokhet.com/

Avatar
Mokhet
Mokhet wrote:

terminés, mais là on part vraiment HS avec tout ce js :D


pfff, il est tard, je croyais être sur un autre news. désolé.

--
laurent
http://mokhet.com/

Avatar
ASM

ASM wrote:
dans le script pour faire un include il faut tricher :

document.write('<script type="text/javascript" src="monfichier.js"'+
'>'+'<'+'/script>');


ou le faire proprement :)


Proprement peut-être
compris par mon NC4.5 sans doute pas ...

http://mokhet.com/js-test/inclusion.html

function JSinclude(url) {
var head = document.getElementsByTagName("head")[0];
var script = document.createElement("script");
script.type = "text/javascript";
script.src = url;
head.appendChild(script);
}



Avatar
Mokhet
ASM wrote:

compris par mon NC4.5 sans doute pas ...


:D oui c'est sûr. Oh zut, mon <insert vieux nav ici> non plus :)

Mais il n'empêche que c'est possible, et si j'avais un NS4 sous la main
j'aurais bien testé un truc comme ça

function JSinclude(url) {
if (document.getElementsByTagName) {
var head = document.getElementsByTagName("head")[0];
var script = document.createElement("script");
script.type = "text/javascript";
script.src = url;
head.appendChild(script);
} else {
// voir si fichier is open
document.write('<script type="text/javascript" src="' + url + "' +
'>'+'<'+'/script>');
}
}

sous réserve qu'on ait pas eu un document.close, mais ca fait longtemps
que je tiens plus compte du vieux NS, je sais pas trop quels sont les
droits sur le document.

--
laurent
http://mokhet.com/

Avatar
ASM

Mais il n'empêche que c'est possible, et si j'avais un NS4 sous la main
j'aurais bien testé un truc comme ça


Pas essayé car me semble convenir au détail prés

function docOuvert() {
docOui = true;
}
onload = docOuvert;

function JSinclude(url) {
if (document.getElementsByTagName) {
var head = document.getElementsByTagName("head")[0];
var script = document.createElement("script");
script.type = "text/javascript";
script.src = url;
head.appendChild(script);
} else {
// voir si fichier is open


if(docOui)

document.write('<script type="text/javascript" src="' + url + "' +
'>'+'<'+'/script>');


else alert('Fonction impossible avec ce navigateur');

}
}

sous réserve qu'on ait pas eu un document.close,


en français de base :
sous réserve de ne pas lancer la fonction JSinclude
après chargement de la page (du document)
si on veut que ça marche avec les vieux navigateurs