begin process at 2012 05 27 21:49:50
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > INCLUDE() EN JAVASCRIPT

INCLUDE() EN JAVASCRIPT


 Information sur la source

Note :
7 / 10 - par 3 personnes
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Niveau :Initié Date de création :10/04/2002 Date de mise à jour :10/04/2002 10:31:37 Vu :40 926

Auteur : Romuald

Ecrire un message privé
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Suite à un message sur le forum, j'ai eu l'idée de créer une 'tite fonction javascript afin de faire des includes comme on peut le faire dans beaucoup d'autres langages

Source

  • <script type="text/javascript">
  • function include(fileName) {
  • if (document.getElementsByTagName) {
  • Script = document.createElement("script");
  • Script.type = "text/javascript";
  • Script.src = fileName;
  • Body = document.getElementsByTagName("BODY");
  • if (Body) {
  • Body[0].appendChild(Script);
  • }
  • }
  • }
  • </script>
<script type="text/javascript">
	function include(fileName) {
		if (document.getElementsByTagName) {
			Script = document.createElement("script");
			Script.type = "text/javascript";
			Script.src = fileName;
			Body = document.getElementsByTagName("BODY");
			if (Body) {
				Body[0].appendChild(Script);
			}
		}
	}
</script> 

 Conclusion

L'utilisation est relativement simple il suffit de faire :
include("fichier.js"); :)

ATTENTION : ne marche PAS avec Netscape 4.x (testé avec IE 6 et NS6 / Mozilla)

Effet indésirable : si vous souhaitez utiliser une fonction se trouvant dans votre fichier javascript inclus, vous devez tout d'abord sortir de l'instruction dans laquelle vous vous trouvez (avec Mozilla en tout cas)

Par exemple en faisant :
include("monfichier.js");
window.setTimeout('lafo nctioncontenuedanslautrefichier()', 100);
Le 100 étant ici le temps en millisecondes après lequel la fonction sera appellée


 Sources du même auteur

Source avec Zip CHANGEMENT DE STYLE SUR FOCUS
Source avec Zip Source avec une capture BARRES DE PROGRESSION ANNIMÉES
Source avec Zip TESTEUR D'EXPRESSIONS REGULIERES
VÉRIFIER UNE DATE

 Sources de la même categorie

Source avec Zip Source avec une capture SLIDESHOW IMAGES ET TEXTES EN PUR JAVASCRIPT par ansuzpeorth
Source avec Zip INPUT TEXT AUTOMATIQUE CREATION SUPPRESSION par lycanges
Source avec Zip Source avec une capture TABLE_SV : TABLEAU DYNAMIQUE, MONTRER/CACHER COLONNE SUR DEM... par synanceia
COLONNES ADAPTABLES EN HAUTEUR par dronoide
Source avec Zip VECTEURS ET MATRICES: OUTILS GRAPHIQUES UTILES par william voirol

Commentaires et avis

Commentaire de moonz le 21/04/2002 19:49:52

ce script ne sert que dans le cas où la page n'utilise pas les balises &lt;script&gt;...&lt;/script&gt; (dans le cas de WSH par exemple), sinon tu peux utiliser l'attribut src. Avec ton exemple de setTimeout ca donne :
&lt;script src="monfichier.js" language="JavaScript"&gt;
window.setTimeout('lafonctioncontenuedanslautrefichier()', 100);
&lt;/script&gt;

J'ai mis 5 car ca vaut 0 dans le cas d'une page utilisant les balises &lt;script&gt;...&lt;/script&gt; mais 10 dans le cas de WSH par exemple ou il n'y a pas de fichier "parent".

Commentaire de verdy_p le 15/08/2009 10:23:20

Pas terrible l'idée de mettre le script inclus à la fin de l'élément BODY, notamment quand le script est sensé s'exécuter avant.
Je le mettrais plutôt à la fin de l'élément HEAD, qui devrait toujours être présent dans le DOM HTML, même s'il est vide car le code HTML source n'en contient pas, et même si le document HTML lui-même (non strictement conforme avec la norme HTML) ne contient pas d'élément BODY, si le navigateur est conforme avec le DOM HTML normalisé.
De plus un vrai include devrait pouvoir s'exécuter de façon synchrone avec la fonction include() du javascript lui-même.
Pour cela, il faudrait que le corps de la fonction Javascript utilisant include() soit lui-même modifié (via le DOM) afin que l'instruction include() elle-même soit remplacée directement par le contenu du fichier référencé. Cependant cela risque de ne pas marcher sur de nombreux navigateurs, car une fonction en cours d'exécution (déjà compilée) si elle peut être éventuellement modifiée, ne l'est qu'en créant une nouvelle instance de cette fonction qui sera liée dans le DOM, sans interrompre la fonction en cours qui ne sera pas modifiée, avec pour effet donc qu'en sortiede include() il manquera l'exécution du contenu inclus et incorporé dans le DOM.
La question n'est pas évidente, et c'est bien évidemment un manque du langage Javascript lui-même, qui ne permet pas de modifier l'instance de la fonction en cours d'éxécution ou plus exactement ici l'instance de la fonction parente qui a appelé la fonction include(): une fonction appelée ne peut pas modifier le code de la fonction du contexte parent (ce serait un très sérieux problème de sécurité difficile à isoler, d'autant que généralement la fonction parente en cours d'exécution est déjà compilée en code natif, et que la fonction appelée n'a pas accès directement à son source pour le modifier). La seule solution serait donc que include() ne soit pas vu en Javascript comme un appel de fonction Javascript, mais comme un mot-clé natif, pris en compte par le compilateur, et prenant en compte divers paramètres de sécurité entre l'appelant et l'appelé.

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales