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.
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...
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.
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
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/
ASM wrote:
dans le script pour faire un include il faut tricher :
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
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/
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/
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é.
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); }
ASM wrote:
dans le script pour faire un include il faut tricher :
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);
}
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); }
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/
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.
: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/
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
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
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
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
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
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