supposons que dans chacun de mes fichiers de script js, j'ai une
variable, ou autre function, déclarant de quel autre script celui-ci
dépend, du genre :
var depend=['location','cookie'];
ou plutôt, afin que ça marche, qqsoit les scripts dans <head /> :
depend.concat('location','cookies');
ensuite j'aurais une routine qui, à partir de depend, "calculerait" les
fichiers effectifs nécessaires, supposons que le résultat serait une
Array() du genre :
suffirait-il alors d'écrire dans le document par :
document.write("<script src='/index_js/styles.js'...");
pour chaque fichier nécessaire et il ne me resterait plus qu'à gérer
l'init de la page ???
--
Artaban de Médée
suffirait-il alors d'écrire dans le document par :
document.write("<script src='/index_js/styles.js'..."); pour chaque fichier nécessaire et il ne me resterait plus qu'à gérer l'init de la page ???
Oui, j'ai du eu une architecture du genre ou je loadais dynamiquement certains fichiers JS en fonction de l'architecture qui hébergeait le site. tu peux, dans un fichier JS faire : document.write("<script src='truc/fichier.js' type='text/javascript'></script>"); et tu devrais avoir l'effet escompté.
Note que ceci doit etre fait dans un .js et non pas dans une balise <script></script> de HTML, sinon ton <script> document.Write("<script src='...'></script>"); alert('toto'); </script> est interprété comme fermant la balise script et toto ne s'affichera jamais.
-- Thibault Taillandier "In a world without fences or walls, who needs gates and windows ?"
suffirait-il alors d'écrire dans le document par :
document.write("<script src='/index_js/styles.js'...");
pour chaque fichier nécessaire et il ne me resterait plus qu'à gérer
l'init de la page ???
Oui, j'ai du eu une architecture du genre ou je loadais dynamiquement
certains fichiers JS en fonction de l'architecture qui hébergeait le site.
tu peux, dans un fichier JS faire :
document.write("<script src='truc/fichier.js'
type='text/javascript'></script>");
et tu devrais avoir l'effet escompté.
Note que ceci doit etre fait dans un .js et non pas dans une balise
<script></script> de HTML, sinon ton
<script>
document.Write("<script src='...'></script>");
alert('toto');
</script>
est interprété comme fermant la balise script et toto ne s'affichera jamais.
--
Thibault Taillandier
"In a world without fences or walls, who needs gates and windows ?"
suffirait-il alors d'écrire dans le document par :
document.write("<script src='/index_js/styles.js'..."); pour chaque fichier nécessaire et il ne me resterait plus qu'à gérer l'init de la page ???
Oui, j'ai du eu une architecture du genre ou je loadais dynamiquement certains fichiers JS en fonction de l'architecture qui hébergeait le site. tu peux, dans un fichier JS faire : document.write("<script src='truc/fichier.js' type='text/javascript'></script>"); et tu devrais avoir l'effet escompté.
Note que ceci doit etre fait dans un .js et non pas dans une balise <script></script> de HTML, sinon ton <script> document.Write("<script src='...'></script>"); alert('toto'); </script> est interprété comme fermant la balise script et toto ne s'affichera jamais.
-- Thibault Taillandier "In a world without fences or walls, who needs gates and windows ?"
unbewusst.sein
Thibault TAILLANDIER wrote:
Oui, j'ai du eu une architecture du genre ou je loadais dynamiquement certains fichiers JS en fonction de l'architecture qui hébergeait le site. tu peux, dans un fichier JS faire : document.write("<script src='truc/fichier.js' type='text/javascript'></script>"); et tu devrais avoir l'effet escompté.
Note que ceci doit etre fait dans un .js et non pas dans une balise <script></script> de HTML, sinon ton <script> document.Write("<script src='...'></script>"); alert('toto'); </script> est interprété comme fermant la balise script et toto ne s'affichera jamais.
OK merci beaucoup, yapuka ;-)
"dans le temps" (+ de 5ans), je ne me souviens + à cause de quel navigateur il fallait écrire :
document.write("<scr" + "ipt...");
donc en séparant la chaine "script" en deux pour éviter un bug de navigateur, c'est tjs d'actualité ??? -- Artaban de Médée
Oui, j'ai du eu une architecture du genre ou je loadais dynamiquement
certains fichiers JS en fonction de l'architecture qui hébergeait le site.
tu peux, dans un fichier JS faire :
document.write("<script src='truc/fichier.js'
type='text/javascript'></script>");
et tu devrais avoir l'effet escompté.
Note que ceci doit etre fait dans un .js et non pas dans une balise
<script></script> de HTML, sinon ton
<script>
document.Write("<script src='...'></script>");
alert('toto');
</script>
est interprété comme fermant la balise script et toto ne s'affichera jamais.
OK merci beaucoup, yapuka ;-)
"dans le temps" (+ de 5ans), je ne me souviens + à cause de quel
navigateur il fallait écrire :
document.write("<scr" + "ipt...");
donc en séparant la chaine "script" en deux pour éviter un bug de
navigateur, c'est tjs d'actualité ???
--
Artaban de Médée
Oui, j'ai du eu une architecture du genre ou je loadais dynamiquement certains fichiers JS en fonction de l'architecture qui hébergeait le site. tu peux, dans un fichier JS faire : document.write("<script src='truc/fichier.js' type='text/javascript'></script>"); et tu devrais avoir l'effet escompté.
Note que ceci doit etre fait dans un .js et non pas dans une balise <script></script> de HTML, sinon ton <script> document.Write("<script src='...'></script>"); alert('toto'); </script> est interprété comme fermant la balise script et toto ne s'affichera jamais.
OK merci beaucoup, yapuka ;-)
"dans le temps" (+ de 5ans), je ne me souviens + à cause de quel navigateur il fallait écrire :
document.write("<scr" + "ipt...");
donc en séparant la chaine "script" en deux pour éviter un bug de navigateur, c'est tjs d'actualité ??? -- Artaban de Médée
Laurent vilday
supposons que dans chacun de mes fichiers de script js, j'ai une variable, ou autre function, déclarant de quel autre script celui-ci dépend, du genre :
var depend=['location','cookie'];
ou plutôt, afin que ça marche, qqsoit les scripts dans <head /> :
depend.concat('location','cookies');
ensuite j'aurais une routine qui, à partir de depend, "calculerait" les fichiers effectifs nécessaires, supposons que le résultat serait une Array() du genre :
suffirait-il alors d'écrire dans le document par :
document.write("<script src='/index_js/styles.js'..."); pour chaque fichier nécessaire et il ne me resterait plus qu'à gérer l'init de la page ???
Les document.write c'est pas beau, et je suis même pas certain que ça marche dans toutes les DTD.
Pas testé à fond, mais je ferais ça :
var is_ie = false; /*@cc_on is_ie = true; @*/
/** * Charge un fichier javascript en l'insérant dans le tag HEAD et * en déclenchant éventuellement une fonction au chargement * @param url {string} Url source du fichier à charger * @param callback {object} Function déclenchée au chargement * (optional) * @param scope {object} Contexte d'exécution forcé du callback * (optional) * @param arbitrary {object} Objet arbitraire transmis en paramètre * à la fonction de callback (optional) * @public */ function loadback(url, callback, scope, arbitrary) { var listener = is_ie ? "onreadystatechange" : "onload", script = document.createElement("script");
// certains prétendent que c'est "application/javascript" // mais je sais pas trop en fait ... :/ script.type = "text/javascript"; script.src = url; if ( callback ) { script[listener] = function() { if ( is_ie && ! ( /loaded|complete/.test(window.event.srcElement.readyState) ) ) { return; } callback.call(scope ? scope : this, arbitrary); script[listener] = null; }; } document.getElementsByTagName("head")[0].appendChild(script); }
// charge le fichier monJS.js loadback('monJS.js');
// charge le fichier et alert au démarrage loadback('monJS.js', function() { alert('loaded'); });
// charge et change le contexte d'exécution du callback function myobj() { this.myMethod = function() { alert('myMethod'); }; return this; } var instance = new myobj(); loadback('monJS.js', instance.myMethod, instance);
// charge, change le contexte et transmet une variable function myobj() { this.myMethod = function(leMessage) { alert(leMessage); }; return this; } var inst = new myobj(); loadback('monJS.js', inst.myMethod, inst, 'Contenu');
-- laurent
supposons que dans chacun de mes fichiers de script js, j'ai une
variable, ou autre function, déclarant de quel autre script celui-ci
dépend, du genre :
var depend=['location','cookie'];
ou plutôt, afin que ça marche, qqsoit les scripts dans <head /> :
depend.concat('location','cookies');
ensuite j'aurais une routine qui, à partir de depend, "calculerait" les
fichiers effectifs nécessaires, supposons que le résultat serait une
Array() du genre :
suffirait-il alors d'écrire dans le document par :
document.write("<script src='/index_js/styles.js'...");
pour chaque fichier nécessaire et il ne me resterait plus qu'à gérer
l'init de la page ???
Les document.write c'est pas beau, et je suis même pas certain que ça
marche dans toutes les DTD.
Pas testé à fond, mais je ferais ça :
var is_ie = false;
/*@cc_on is_ie = true; @*/
/**
* Charge un fichier javascript en l'insérant dans le tag HEAD et
* en déclenchant éventuellement une fonction au chargement
* @param url {string} Url source du fichier à charger
* @param callback {object} Function déclenchée au chargement
* (optional)
* @param scope {object} Contexte d'exécution forcé du callback
* (optional)
* @param arbitrary {object} Objet arbitraire transmis en paramètre
* à la fonction de callback (optional)
* @public
*/
function loadback(url, callback, scope, arbitrary)
{
var
listener = is_ie ? "onreadystatechange" : "onload",
script = document.createElement("script");
// certains prétendent que c'est "application/javascript"
// mais je sais pas trop en fait ... :/
script.type = "text/javascript";
script.src = url;
if ( callback )
{
script[listener] = function()
{
if ( is_ie && ! (
/loaded|complete/.test(window.event.srcElement.readyState) ) )
{
return;
}
callback.call(scope ? scope : this, arbitrary);
script[listener] = null;
};
}
document.getElementsByTagName("head")[0].appendChild(script);
}
// charge le fichier monJS.js
loadback('monJS.js');
// charge le fichier et alert au démarrage
loadback('monJS.js', function() { alert('loaded'); });
// charge et change le contexte d'exécution du callback
function myobj()
{
this.myMethod = function()
{
alert('myMethod');
};
return this;
}
var instance = new myobj();
loadback('monJS.js', instance.myMethod, instance);
// charge, change le contexte et transmet une variable
function myobj()
{
this.myMethod = function(leMessage)
{
alert(leMessage);
};
return this;
}
var inst = new myobj();
loadback('monJS.js', inst.myMethod, inst, 'Contenu');
supposons que dans chacun de mes fichiers de script js, j'ai une variable, ou autre function, déclarant de quel autre script celui-ci dépend, du genre :
var depend=['location','cookie'];
ou plutôt, afin que ça marche, qqsoit les scripts dans <head /> :
depend.concat('location','cookies');
ensuite j'aurais une routine qui, à partir de depend, "calculerait" les fichiers effectifs nécessaires, supposons que le résultat serait une Array() du genre :
suffirait-il alors d'écrire dans le document par :
document.write("<script src='/index_js/styles.js'..."); pour chaque fichier nécessaire et il ne me resterait plus qu'à gérer l'init de la page ???
Les document.write c'est pas beau, et je suis même pas certain que ça marche dans toutes les DTD.
Pas testé à fond, mais je ferais ça :
var is_ie = false; /*@cc_on is_ie = true; @*/
/** * Charge un fichier javascript en l'insérant dans le tag HEAD et * en déclenchant éventuellement une fonction au chargement * @param url {string} Url source du fichier à charger * @param callback {object} Function déclenchée au chargement * (optional) * @param scope {object} Contexte d'exécution forcé du callback * (optional) * @param arbitrary {object} Objet arbitraire transmis en paramètre * à la fonction de callback (optional) * @public */ function loadback(url, callback, scope, arbitrary) { var listener = is_ie ? "onreadystatechange" : "onload", script = document.createElement("script");
// certains prétendent que c'est "application/javascript" // mais je sais pas trop en fait ... :/ script.type = "text/javascript"; script.src = url; if ( callback ) { script[listener] = function() { if ( is_ie && ! ( /loaded|complete/.test(window.event.srcElement.readyState) ) ) { return; } callback.call(scope ? scope : this, arbitrary); script[listener] = null; }; } document.getElementsByTagName("head")[0].appendChild(script); }
// charge le fichier monJS.js loadback('monJS.js');
// charge le fichier et alert au démarrage loadback('monJS.js', function() { alert('loaded'); });
// charge et change le contexte d'exécution du callback function myobj() { this.myMethod = function() { alert('myMethod'); }; return this; } var instance = new myobj(); loadback('monJS.js', instance.myMethod, instance);
// charge, change le contexte et transmet une variable function myobj() { this.myMethod = function(leMessage) { alert(leMessage); }; return this; } var inst = new myobj(); loadback('monJS.js', inst.myMethod, inst, 'Contenu');
-- laurent
unbewusst.sein
Laurent vilday wrote:
Les document.write c'est pas beau, et je suis même pas certain que ça marche dans toutes les DTD.
Oui, oui, entièrement d'accord, j'aurais fait ça aussi en créant des noeuds...
Pas testé à fond, mais je ferais ça :
var is_ie = false; /*@cc_on is_ie = true; @*/
/** * Charge un fichier javascript en l'insérant dans le tag HEAD et * en déclenchant éventuellement une fonction au chargement * @param url {string} Url source du fichier à charger * @param callback {object} Function déclenchée au chargement * (optional) * @param scope {object} Contexte d'exécution forcé du callback * (optional) * @param arbitrary {object} Objet arbitraire transmis en paramètre * à la fonction de callback (optional) * @public */ function loadback(url, callback, scope, arbitrary) { var listener = is_ie ? "onreadystatechange" : "onload", script = document.createElement("script");
// certains prétendent que c'est "application/javascript"
j'ai tjs mis text, rien n'a râlé pour l'instant )))
// mais je sais pas trop en fait ... :/ script.type = "text/javascript"; script.src = url; if ( callback ) { script[listener] = function() { if ( is_ie && ! ( /loaded|complete/.test(window.event.srcElement.readyState) ) ) { return; } callback.call(scope ? scope : this, arbitrary); script[listener] = null; }; } document.getElementsByTagName("head")[0].appendChild(script); }
// charge le fichier monJS.js loadback('monJS.js');
// charge le fichier et alert au démarrage loadback('monJS.js', function() { alert('loaded'); });
// charge et change le contexte d'exécution du callback function myobj() { this.myMethod = function() { alert('myMethod'); }; return this; } var instance = new myobj(); loadback('monJS.js', instance.myMethod, instance);
// charge, change le contexte et transmet une variable function myobj() { this.myMethod = function(leMessage) { alert(leMessage); }; return this; } var inst = new myobj(); loadback('monJS.js', inst.myMethod, inst, 'Contenu');
ouais, OK, merci, c'est pas très sorcier finalement ;-) -- Artaban de Médée
Laurent vilday <mokhet@mokhet.com> wrote:
Les document.write c'est pas beau, et je suis même pas certain que ça
marche dans toutes les DTD.
Oui, oui, entièrement d'accord, j'aurais fait ça aussi en créant des
noeuds...
Pas testé à fond, mais je ferais ça :
var is_ie = false;
/*@cc_on is_ie = true; @*/
/**
* Charge un fichier javascript en l'insérant dans le tag HEAD et
* en déclenchant éventuellement une fonction au chargement
* @param url {string} Url source du fichier à charger
* @param callback {object} Function déclenchée au chargement
* (optional)
* @param scope {object} Contexte d'exécution forcé du callback
* (optional)
* @param arbitrary {object} Objet arbitraire transmis en paramètre
* à la fonction de callback (optional)
* @public
*/
function loadback(url, callback, scope, arbitrary)
{
var
listener = is_ie ? "onreadystatechange" : "onload",
script = document.createElement("script");
// certains prétendent que c'est "application/javascript"
j'ai tjs mis text, rien n'a râlé pour l'instant )))
// mais je sais pas trop en fait ... :/
script.type = "text/javascript";
script.src = url;
if ( callback )
{
script[listener] = function()
{
if ( is_ie && ! (
/loaded|complete/.test(window.event.srcElement.readyState) ) )
{
return;
}
callback.call(scope ? scope : this, arbitrary);
script[listener] = null;
};
}
document.getElementsByTagName("head")[0].appendChild(script);
}
// charge le fichier monJS.js
loadback('monJS.js');
// charge le fichier et alert au démarrage
loadback('monJS.js', function() { alert('loaded'); });
// charge et change le contexte d'exécution du callback
function myobj()
{
this.myMethod = function()
{
alert('myMethod');
};
return this;
}
var instance = new myobj();
loadback('monJS.js', instance.myMethod, instance);
// charge, change le contexte et transmet une variable
function myobj()
{
this.myMethod = function(leMessage)
{
alert(leMessage);
};
return this;
}
var inst = new myobj();
loadback('monJS.js', inst.myMethod, inst, 'Contenu');
ouais, OK, merci, c'est pas très sorcier finalement ;-)
--
Artaban de Médée
Les document.write c'est pas beau, et je suis même pas certain que ça marche dans toutes les DTD.
Oui, oui, entièrement d'accord, j'aurais fait ça aussi en créant des noeuds...
Pas testé à fond, mais je ferais ça :
var is_ie = false; /*@cc_on is_ie = true; @*/
/** * Charge un fichier javascript en l'insérant dans le tag HEAD et * en déclenchant éventuellement une fonction au chargement * @param url {string} Url source du fichier à charger * @param callback {object} Function déclenchée au chargement * (optional) * @param scope {object} Contexte d'exécution forcé du callback * (optional) * @param arbitrary {object} Objet arbitraire transmis en paramètre * à la fonction de callback (optional) * @public */ function loadback(url, callback, scope, arbitrary) { var listener = is_ie ? "onreadystatechange" : "onload", script = document.createElement("script");
// certains prétendent que c'est "application/javascript"
j'ai tjs mis text, rien n'a râlé pour l'instant )))
// mais je sais pas trop en fait ... :/ script.type = "text/javascript"; script.src = url; if ( callback ) { script[listener] = function() { if ( is_ie && ! ( /loaded|complete/.test(window.event.srcElement.readyState) ) ) { return; } callback.call(scope ? scope : this, arbitrary); script[listener] = null; }; } document.getElementsByTagName("head")[0].appendChild(script); }
// charge le fichier monJS.js loadback('monJS.js');
// charge le fichier et alert au démarrage loadback('monJS.js', function() { alert('loaded'); });
// charge et change le contexte d'exécution du callback function myobj() { this.myMethod = function() { alert('myMethod'); }; return this; } var instance = new myobj(); loadback('monJS.js', instance.myMethod, instance);
// charge, change le contexte et transmet une variable function myobj() { this.myMethod = function(leMessage) { alert(leMessage); }; return this; } var inst = new myobj(); loadback('monJS.js', inst.myMethod, inst, 'Contenu');
ouais, OK, merci, c'est pas très sorcier finalement ;-) -- Artaban de Médée
ASM
est interprété comme fermant la balise script et toto ne s'affichera jamais.