Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/12/2011, 19h04   #1
Membre du Club
 
Inscription : août 2009
Messages : 177
Détails du profil
Informations personnelles :
Âge : 47
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 177
Points : 46
Points : 46
Par défaut Appeler un sous script javascript -> ?

Bonjour à tous,
Voilà ce qui m'amène aujourd'hui : J'aimerais pouvoir appeler, depuis un javascript, un autre javascript (externe, donc), un peu à la façon du fameux "Gosub" du langage "basic" (par exemple) -> Est-ce possible, SVP ?

Par avance Merci pour toute suggestion que vous pourriez avoir !
souffle56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 19h21   #2
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 872
Points : 1 381
Points : 1 381
je ne connais pas gosub, donc je ne suis pas sûr de partir dans la bonne réponse, mais pour ajouter un nouveau fichier javascript à un document depuis une source tu peux faire comme ceci (au fait, la question revient souvent donc prend le temps de faire une recherche la prochaine fois avant de poser une question)

Code :
1
2
3
4
var script = document.createElement('script');
script.src = 'http://www.tonsite.com/tonscript.js';
//script.type = 'text/javascript'; // optionnel, jQuery ne le fait pas donc je pense qu'on peut aussi s'en passer.
document.getElementsByTagName('head')[0].appendChild(script);
Willpower est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 21h56   #3
Membre du Club
 
Inscription : août 2009
Messages : 177
Détails du profil
Informations personnelles :
Âge : 47
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 177
Points : 46
Points : 46
Merci Willpower pour ta proposition !

L'intérêt du "Gosub" est de pouvoir imbriquer un code dans un autre code comme si il faisait partie intégrante de ce code -> Je viens d'essayer avec le code que tu m'as proposé (voir ci-dessous) et, effectivement, en regardant avec "Firebug", je vois que "TEST1" et "TEST2" ont bien été chargés dans mon navigateur...

Ceci dit, seul le titre "<H3>Hum1...</H3>" est affiché à l'écran !
-> Comment puis-je faire pour que le titre "<H3>Hum2...</H3>" (contenu dans "TEST2.js") s'affiche également (de façon "imbriquée") ?

PS: Pour information, j'ai bien fait ma "petite recherche" avant de mettre ce post, mais c'est justement parce que je n'ai pas su trouver que j'ai entré ce post. Ceci dit, je reste ouvert à toute piste extérieure ou propre à ce site qui puisse m'aider à résoudre ma problématique du moment !

TEST1.js
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 
<html lang="fr">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 
  <title></title>
 
  <script type="text/javascript">
    document.write("<H3>Hum1...</H3>"); 
 
	var script = document.createElement('script');
	script.src = 'TEST2.js';
	//script.type = 'text/javascript'; // optionnel, jQuery ne le fait pas donc je pense qu'on peut aussi s'en passer.
	document.getElementsByTagName('head')[0].appendChild(script);
  </script>
</head>
<body>
 
<!-- Document -->
 
</body>
</html>
TEST2.js
Code :
1
2
 
	document.write("<H3>Hum2...</H3>");
souffle56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 22h22   #4
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 872
Points : 1 381
Points : 1 381
arg, des document.write ... j'aime pas trop beaucoup ça.

mais soit, allons jusqu'au bout, la solution devient donc :

Code :
document.write("<script type='text/javascript' src='TEST2.js'></sc"+"ript>");
nb: j'ai écris la balise fermante de script en la divisant en 2 strings pour éviter un bug "normal" :

au lieu d'interpréter ceci :
Code html :
1
2
3
4
5
6
 // ouverture de la balise script
  <script type="text/javascript">
    document.write("<H3>Hum1...</H3>"); 
    document.write("<script src='TEST2.js'></script>");
// fermeture de la balise script
  </script>

ta page html va interpréter ceci :
Code html :
1
2
3
4
5
6
7
8
9
10
11
//ouverture de la balise script
  <script type="text/javascript">
    document.write("<H3>Hum1...</H3>"); 
// code inachevé et donc erreur
    document.write("<script src='TEST2.js'>
// fermeture de la balise script
   </script>
// code non html
");
// fermeture d'une balise script en trop
  </script>
Willpower est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 22h36   #5
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 872
Points : 1 381
Points : 1 381
mais fait gaffe au comportement qui diffère sous les navigateurs pour le document.write :

Code :
1
2
3
    document.write("<H3>Hum1...</H3>"); 
    document.write("<script src='TEST2.js'></sc"+"ript>");
    document.write("<H3>Hum3...</H3>");
va t'afficher :
Hum1
Hum2
Hum3

sous chrome et firefox

mais :
Hum1
Hum3
Hum2

sous IE.

edit: je te déconseille vivement d'utiliser ce système car ce n'est pas une bonne pratique (du tout).
Willpower est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 22h54   #6
Membre du Club
 
Inscription : août 2009
Messages : 177
Détails du profil
Informations personnelles :
Âge : 47
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 177
Points : 46
Points : 46
Ok Willpower, ça colle pour moi !
Effectivement, là, à présent, j'ai bien une imbrication de mon code... et ça s'affiche "correct" à l'écran...

Ceci dit, vu ce que tu me dis / aux inconvénients de "document.write()", aurais-tu une alternative à me proposer à ce code :
Code :
document.write("<script type='text/javascript' src='TEST2.js'></sc"+"ript>");
PS : Là, ça n'est qu'un test, évidemment, car TEST2 comprend en fait plus de 500 lignes de code js -> On est loin du simple et limité "document.write()" -> J'espère que ta suggestion "tiendra la route" quand même !
souffle56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 23h02   #7
Membre du Club
 
Inscription : août 2009
Messages : 177
Détails du profil
Informations personnelles :
Âge : 47
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 177
Points : 46
Points : 46
Je précise également que dans l'équivalent de "TEST1.js", en "conditions réelles", il n'y a aucun "document.write" qui soit -> Ca va peut-être "passer" -> Petit test de mon coté... et je reviens !

----------------------------

Bon, ça y est, voilà le "compte-rendu" :
Désolé, je crois que j'ai parlé un peu vite car, en fait, comme on peut le voir ci-dessous (code observé sur le navigateur), les 2 javascripts ne sont pas imbriqués mais séparés !
-> Vu la "dynamique" de mon programme, je ne vais pas pouvoir fonctionner comme cela... Est-ce que quelqu'un aurait une autre suggestion qui me permettrait de réaliser une réelle imbrication de TEST2.js dans TEST1.js ?

PS : Voilà ce que ça me donne, en fait, coté navigateur (Firefox), dans le <Body> :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<body>
 
	<script type="text/javascript">
		document.write("<H3>Hum1...</H3>");
		document.write("<script type='text/javascript' src='TEST2.js'></sc"+"ript>");
	</script>
 
	<h3>Hum1...</h3>
 
	<script src="TEST2.js" type="text/javascript">
		document.write("<H3>Hum2...</H3>");
	</script>
 
	<h3>Hum2...</h3>
 
</body>
et voilà ce que j'aimerais obtenir :
Code :
1
2
3
4
5
6
7
8
9
10
11
<body>
 
	<script type="text/javascript">
		document.write("<H3>Hum1...</H3>");
		document.write("<H3>Hum2...</H3>");
	</script>
 
	<h3>Hum1...</h3>
	<h3>Hum2...</h3>
 
</body>
souffle56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h56.


 
 
 
 
Partenaires

Hébergement Web