11498 sujets

JavaScript, DOM et API Web HTML5

Salut,

Est-il possible de mettre plusieurs scripts à la suite plutôt que de répéter mon script toutes les 5 lignes ?

Exemple

Au lieu de ça :


<script type="text/javascript">  
if(window.innerWidth>680) {
var script1 = document.createElement('script');
script1.src = 'js/script1.js';
script1.type = 'text/javascript';
document.getElementsByTagName('body')[0].appendChild(script1);
}
</script>

<script type="text/javascript">  
if(window.innerWidth>680) {
var script2= document.createElement('script');
script2.src = 'js/script2.js';
script2.type = 'text/javascript';
document.getElementsByTagName('body')[0].appendChild(script2);
}
</script>

//...etc


Cela fonctionne aussi en faisant ça mais je pense que c'est crade comme façon de faire Smiley biggol


<script type="text/javascript">   
if(window.innerWidth>680) {
var script1= document.createElement('script');
var script2= document.createElement('script');
script1.src = 'js/script1.js';
script2.src = 'js/script2.js';
script1.type = 'text/javascript';
script2.type = 'text/javascript';
document.getElementsByTagName('body')[0].appendChild(script1);
document.getElementsByTagName('body')[0].appendChild(script2);
}
</script>


Mais plutôt avoir quelque chose dans ce goût là ? :


<script type="text/javascript">   
if(window.innerWidth>680) {
var scripts= document.createElement('script');
scripts.src = 'js/script1.js','js/script2.js','js/script3.js','js/script4.js';
scripts.type = 'text/javascript';
document.getElementsByTagName('body')[0].appendChild(scripts);
}
</script>



Merci !
Bonjour.
Avec une boucle.
if(window.innerWidth>680) {
  var scripts = ['js/script1.js', 'js/script2.js'];
  for(var i in scripts){
    var script1 = document.createElement('script');
    script1.src = scripts\[i\];
    script1.type = 'text/javascript';
    document.getElementsByTagName('body')[0].appendChild(script1);
  }
}

Modifié par loicbcn (26 Jul 2013 - 10:38)
loicbcn a écrit :
Bonjour.
Avec une boucle.
if(window.innerWidth&gt;680) {
  var scripts = ['js/script1.js', 'js/script2.js'];
  for(var i in scripts){
    var script1 = document.createElement('script');
    script1.src = scripts\[i\];
    script1.type = 'text/javascript';
    document.getElementsByTagName('body')[0].appendChild(script1);
  }
}


Merci.

J'ai réussi en faisant ça :


<script type="text/javascript">   
if(window.innerWidth>680) {
  var scripts = ['js/overgif.js', 'js/overgif-lancement.js'];
  for(var i in scripts){
    var script = document.createElement('script');
    script.src = (scripts [ i ] );
    script.type = 'text/javascript';
    document.getElementsByTagName('body')[0].appendChild(script);
  }
}
</script>


Est-ce bien correct ?
Modifié par yank (27 Jul 2013 - 08:58)
Tu devrais sortir document.getElementsByTagName('body')[0] de ta boucle. Pas besoin de sélectionner le body à chaque itération, une fois suffit.
jb_gfx a écrit :
Tu devrais sortir document.getElementsByTagName('body')[0] de ta boucle. Pas besoin de sélectionner le body à chaque itération, une fois suffit.


Et comment fait-on ça ? Smiley rolleyes
J'ai essayé plusieurs variantes en déplaçant cette ligne mais aucune ne fonctionne, ne maîtrisant pas JavaScript.

Mais c'est clair que si ça peut être + performant ça m'intéresse !
Merci pour ton aide.


<script type="text/javascript">   
if(window.innerWidth>680) {
var scripts = ['js/overgif.js', 'js/overgif-lancement.js'];
for(var i in scripts){
var script = document.createElement('script');
script.src = (scripts [ i ] );
script.type = 'text/javascript';
document.getElementsByTagName('body')[0].appendChild(script);
}
}
</script>
Perso je commencerais par isoler le code répétitif dans une fonction... le quasi copier-coller est l'ennemi n°1 du programmeur.


function include (url) {
var s = document.createElement('script');
s.setAttribute('type', 'text/javascript');
s.setAttribute('src', url);
document.getElementsByTagName('body')[ 0 ].appendChild(s);
}
QuentinC a écrit :
Perso je commencerais par isoler le code répétitif dans une fonction... le quasi copier-coller est l'ennemi n°1 du programmeur.


function include (url) {
var s = document.createElement('script');
s.setAttribute('type', 'text/javascript');
s.setAttribute('src', url);
document.getElementsByTagName('body')[ 0 ].appendChild(s);
}


Merci pour ta réponse, mais je ne vois pas comment le mettre en oeuvre par rapport à mon code déjà existant ...


if(window.innerWidth>680) {
var scripts = ['js/overgif.js', 'js/overgif-lancement.js'];
for(var i in scripts){
var script = document.createElement('script');
script.src = (scripts [ i ] );
script.type = 'text/javascript';
document.getElementsByTagName('body')[0].appendChild(script);
}
}