jQuery
En savoir plus
Adobe Flex & Flash
En savoir plus
ASP.NET
En savoir plus

Inscris-toi au e-camp "Héberge ton jeu Facebook sur Azure" de Microsoft vendredi 25 mai à 13h30 !
| Page 1 2 Suivante | |||||||
| Auteur | Message | ||||||
|---|---|---|---|---|---|---|---|
| 0 visiteur sur ce sujet | |||||||
| Page 1 2 Suivante | |||||||
MarvelBoy
|
# Posté le 12/10/2008 à 20:26:04 | ||||||
![]()
|
Bonjour à tous, ceci est mon premier post.
Je vous passe la présentation du type "je suis un tel... j'aime ceci, cela etc" pour en venir directement au vif du sujet : j'aimerais savoir s'il existe une fonction (de votre création ou une officielle que je ne connaitrais pas) qui permette d'inclure un fichier .js dans uns script js (un peu comme un include dans une page php, sauf que le fichier à inclure est un script js, à inclure directement dans un autre script js)... pourquoi cela ? tout simplement pour alléger mon code qui risquerait de devenir fort volumineux (relatif à des réponses pré-programmées sur un modèle de question-réponse)... merci d'avance pour vos éventuels posts
|
||||||
| Publicité | # Posté le 12/10/2008 à 20:26:04 | ||||||
|
|
|||||||
seebz
|
# Posté le 12/10/2008 à 20:32:21 | ||||||
|
zéro zéro seebz
Ville : Calais |
2 solutions:
1)Code : JavaScript
2) tu appelle ton fichier via ajax et tu lance un eval sur la réponse Seebz.net : Blog Développement Web 2.0 ... Code.Seebz.net : Ressources pour développeurs ... Api.Seebz.net ![]() |
||||||
Timot
|
# Posté le 12/10/2008 à 20:33:22 | ||||||
Réfléchir ne tue pas !![]()
Ville : Castres |
Google est ton ami :
Citation : google Code :
function include(fileName){ document.write("<script type='text/javascript' src='"+fileName+"'></script>" ); } et ensuite plus qu'à faire: include('monFichier.js'); ![]() ![]() |
||||||
MarvelBoy
|
# Posté le 12/10/2008 à 20:40:13 | ||||||
![]()
|
hum merci seebz et ne t'inquiète pas timot je viens de passer une heure à chercher cette fonction sur google sans solution apparente (il y a des fonctions qui par exemple ne fonctionne que sur ie7 et pas sur mozilla)...
mais en fait si je teste cette fonction elle va l'ouvrir le script et afficher une page blanche (c'est ce qui se passe)... moi ce que je voudrais, c'est simplement un fonction qui aille chercher dans le script (un include quoi) sans l'ouvrir sur la page en gros... je ne sais pas si c'est clair mais en tout cas cette fonction là (je l'avais déjà testée) ne m'affiche qu'une page blanche lorsqu'une recherche s'apparente au script externe voulu mais seebz que veux-tu dire exactement par "tu appelle ton fichier via ajax et tu lance un eval sur la réponse "
Édité
le 12/10/2008 à 20:42:27
par MarvelBoy
|
||||||
seebz
|
# Posté le 12/10/2008 à 20:45:10 | ||||||
|
zéro zéro seebz
Ville : Calais |
Peux-tu expliquer l'histoire de la page blanche, j'avoue ne pas avoir vraiment compris :s
Seebz.net : Blog Développement Web 2.0 ... Code.Seebz.net : Ressources pour développeurs ... Api.Seebz.net ![]() |
||||||
MarvelBoy
|
# Posté le 12/10/2008 à 21:00:20 | ||||||
![]()
|
bon en gros :
il y a un textarea lorsque l'on lance une "recherche", on cherche le mot clef de cette recherche à travers une série de conditions en javascript de type if (document.ondine.question.value.indexOf('uelle est ta couleur préférée')>-1) answer="Violet."; answer s'affiche automatiquement c'est schématique mettons maintenant que cette condition se trouve dans un fichier .js... lorsque je lance une recherche, la page devient complètement blanche avec ton script (si bien sur je ne me suis pas planté) j'ai mis ta fonction dans un fichier .js à part que j'appelle avant le <body> de ma page html et dc la page .js est incluse comme suit : /* BDD */ include('jv/bdd.js'); mais apparemment ça ne marche pas sinn j'avais trouvé cette autre fonction qui elle marche, mais pas sous mozilla : function include(url) { var head = window.document.getElementsByTagName('head')[0]; var script = window.document.createElement('script'); script.setAttribute('src', url); script.setAttribute('type', 'text/javascript'); head.appendChild(script); } |
||||||
Timot
|
# Posté le 12/10/2008 à 21:01:55 | ||||||
Réfléchir ne tue pas !![]()
Ville : Castres |
Beh si, parce que en fait, si tu l'inclus pas au chargement de ta page, il va ecrire sur le document, et donc tout effacer.
Beh il faudrai faire un truc du genre, si tu veux pas le rajouter au chargement de la page : var header = document.createElement("script"); header.setAttribute("type","text/javascript"); header.setAttribute("src","source du script"); document.getElementsByTagName("head")[0].appendChild(header); ![]() ![]() |
||||||
MarvelBoy
|
# Posté le 12/10/2008 à 21:07:06 | ||||||
![]()
|
hum je t'avourais timot que je suis plutôt une bille en javascript et que ça me serait plus facile de passer par une fonction...
bon sinn évidemment je pourrais directement écrire toutes les conditions dans mon mm script directement sur le fichier html mais bon, si c'est pour que le client mette trois plombes à charger les 3000 lignes de la page... |
||||||
Timot
|
# Posté le 12/10/2008 à 21:09:38 | ||||||
Réfléchir ne tue pas !![]()
Ville : Castres |
Tu es sur que la fonction avec le appendChild ne marche pas avec mozilla ?
Il te met quoi comme erreur ? ![]() ![]() |
||||||
MarvelBoy
|
# Posté le 12/10/2008 à 21:12:34 | ||||||
![]()
|
bah il ne met pas d'erreur précise, il n'affiche simplement pas ce que devrait être en afficher en answer... j'ai une réponse pré-programmée qui se trouve dans le script js du fichier html lui mm et qui donne une reponse donnée (par exemple "heing?") si aucune des conditions n'a été rempli (en gros si la question n'a pas de réponse pré-programmée), or cette réponse existe bien dans le script externe... mais le truc c'est que ça marche très bien sous ie
Édité
le 12/10/2008 à 21:14:18
par MarvelBoy
|
||||||
Timot
|
# Posté le 12/10/2008 à 21:14:16 | ||||||
Réfléchir ne tue pas !![]()
Ville : Castres |
Vire les windows. , met directement document. pour voir ?
![]() ![]() |
||||||
MarvelBoy
|
# Posté le 12/10/2008 à 21:15:39 | ||||||
![]()
|
ça marche toujours sous ie mais pas sour mozilla
|
||||||
Timot
|
# Posté le 12/10/2008 à 21:19:49 | ||||||
Réfléchir ne tue pas !![]()
Ville : Castres |
Est ce que tu aurais un lien de test ?
Parce que je vois pas l'erreur la. ![]() ![]() |
||||||
MarvelBoy
|
# Posté le 12/10/2008 à 21:29:01 | ||||||
![]()
|
malheureusement je ne l'ai pas mis en ligne... mais je peux t'afficher un exmple de code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Psykanswers - Un canard à la réponses à vos questions !</title><link rel="stylesheet" type="text/css" href="psykocss.css" media="screen" title="psykanswers" /> <link rel="shortcut icon" href="favicon.gif" type="image/x-icon"> <script type="text/javascript" src="jv/f_include.js"></script> </head> <body> <script language="JavaScript"> var answer = "" function theAnswers () { if (document.ondine.question.value.indexOf('uelle est ta couleur préférée')>-1) answer="Violet."; else { answer = "heing?"; } /* BDD */ include('bdd.js'); document.ondine.question.value = "Traduction en cours ..."; timerID=setTimeout("document.gueule.reply.value = answer",500); } </script> <div id="pokeball"> <h5>Posez votre question en Oui/Non.</h5> <div id="papy"> <form name="ondine" onSubmit="0"> <textarea name="question" cols="42" rows="3" class="question" onfocus="this.value =''"> </textarea><input name="button" type="button" onclick="thekAnswers()" value="OK" class="ok"/></form> </div> <div id="psykokwak"> <form name="gueule" onSubmit="0"> <textarea name="reply" cols="52" rows="3" class="reponse"> </textarea> </form> </div> </body> </html> voici le code du fichier index.html celui du fichier f_include.js : function include(url) { var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.setAttribute('src', url); script.setAttribute('type', 'text/javascript'); head.appendChild(script); } et celui du fichier bdd.js : if (document.ondine.question.value.indexOf('slt')>-1) { answer = "bonjour"; }
Édité
le 12/10/2008 à 21:30:29
par MarvelBoy
|
||||||
Timot
|
# Posté le 12/10/2008 à 21:30:10 | ||||||
Réfléchir ne tue pas !![]()
Ville : Castres |
Essaye de mettre comme contenu de l'include juste une instruction du genre "alert('test')" pour voir s'il est chargé.
![]() ![]() |
||||||
MarvelBoy
|
# Posté le 12/10/2008 à 21:32:58 | ||||||
![]()
|
hm ça marche sous ie et mozilla... ça voudrait dire qu'il arrive à accéder au fichier comme voulu mais je ne comprends pas dans ce cas pk il n'affiche pas answer correctement
|
||||||
Timot
|
# Posté le 12/10/2008 à 21:34:39 | ||||||
Réfléchir ne tue pas !![]()
Ville : Castres |
Essaye de mettre une id sur le champ de ton formulaire, et accede y avec getElementById("id")
![]() ![]() |
||||||
MarvelBoy
|
# Posté le 12/10/2008 à 21:35:41 | ||||||
![]()
|
hm je suis plutôt une bille, comme je le disais, en javascript...
pourrais-tu préciser ?
Édité
le 12/10/2008 à 21:37:56
par MarvelBoy
|
||||||
Timot
|
# Posté le 12/10/2008 à 21:41:28 | ||||||
Réfléchir ne tue pas !![]()
Ville : Castres |
Comme ca :
<textarea name="question" cols="42" rows="3" class="question" onfocus="this.value =''" id="question"> </textarea> if (document.getElementById("question").value.indexOf('slt')>-1) { answer = "bonjour"; } Peut etre qu'il n'aime pas le passement de variable d'un script a l'autre aussi ? ![]() ![]() |
||||||
MarvelBoy
|
# Posté le 12/10/2008 à 21:45:08 | ||||||
![]()
|
bah c'est ce que je me demande vu que ce que tu m'as demandé de faire ne fonctionne pas...
c qund mm dingue que personne n'ait encore trouvé une fonction de ce type en javascript.. moi ça me parait presque essentiel pour bien ordonné un script... |
||||||
smurf
|
# Posté le 13/10/2008 à 01:16:56 | ||||||
![]()
Études : ENAC |
Bonjour,
C'est quand même dingue ce que les gens peuvent chercher comme fonctions tordues sans utilité... Donc pour résumer: - soit on inclut le fichier au chargement de la page avec la bonne vieille balise <script> - soit on fait un chargement AJAX que l'on évalue Dans le cas de MarvelBoy qui n'a pas l'air d'avoir des connaissances très poussées en JS, mon conseil serait l'inclusion avec la balise <script>. Avant de faire des choses tordues et vicieuses, il faut d'abord apprendre les rudiments (par exemple la notation document.name n'est plus utilisée depuis longtemps au profit du document.getElementById; onSubmit="0" ne veut strictement rien dire, etc...) |
||||||
seebz
|
# Posté le 13/10/2008 à 20:34:53 | ||||||
|
zéro zéro seebz
Ville : Calais |
Comme c'est le premier topic de MarvelBoy, il fallait quand même le résoudre.
Alors, rien que pour lui, je vous présente une fonction include() en javascript .. qui fonctionne ![]() ca mérite un p'tit commentaire ça non ? (voir signature) Seebz.net : Blog Développement Web 2.0 ... Code.Seebz.net : Ressources pour développeurs ... Api.Seebz.net ![]() |
||||||
Thunderseb
|
# Posté le 13/10/2008 à 22:10:58 | ||||||
Responsable de la validation![]()
Ville : Liège |
OMG, inclure du JS via XHR en faisant un eval
![]() XHR : totalement inutile eval : dangereux et à utiliser le moins possible car gourmand en ressources La seule solution acceptable est bêtement d'ajouter un élément SCRIPT : Code : JavaScript
|
||||||
MarvelBoy
|
# Posté le 15/10/2008 à 13:38:24 | ||||||
![]()
|
Merci de m'avoir aidé mais puisque qu'aucune de vos alternatives ne marchent (les ayant toutes essayées), j'en reviens à mettre ma fonction entière dans un fichier à part...
encore merci |
||||||
Timot
|
# Posté le 15/10/2008 à 18:13:23 | ||||||
Réfléchir ne tue pas !![]()
Ville : Castres |
Citation : MarvelBoy
Merci de m'avoir aidé mais puisque qu'aucune de vos alternatives ne marchent (les ayant toutes essayées), j'en reviens à mettre ma fonction entière dans un fichier à part... encore merci Mais si ca marche, la preuve c'est que quand tu as mis alert("test") dans le fichier a inclure, ca la fait. Donc ne dis pas que l'inclusion ne marche pas ! ![]() ![]() |
||||||
MarvelBoy
|
# Posté le 15/10/2008 à 20:16:46 | ||||||
![]()
|
Nan mais je suis d'accord que ça marche, mais pas dans le sens où on aurait trouvé le pourquoi de mon problème
mais je le dis encore une fois : merci
Édité
le 15/10/2008 à 20:17:03
par MarvelBoy
|
||||||
Timot
|
# Posté le 15/10/2008 à 20:23:35 | ||||||
Réfléchir ne tue pas !![]()
Ville : Castres |
Oui mais repose ton problème, car maintenant que l'inclusion marche, c'est quoi qui ne marche pas dans ton script ?
![]() ![]() |
||||||
RekinMalad
|
# Posté le 20/10/2008 à 13:28:02 | ||||||
Peace and love !![]()
|
Citation : Thunderseb
OMG, inclure du JS via XHR en faisant un eval ![]() XHR : totalement inutile eval : dangereux et à utiliser le moins possible car gourmand en ressources La seule solution acceptable est bêtement d'ajouter un élément SCRIPT : Code : JavaScript
Et si l'on veut faire un eval mais pas d'un fichier, d'une portion de code ... on remplace oScript.src par oScript.text non ? |
||||||
asfez
|
# Posté le 15/01/2009 à 09:02:47 | ||||||
|
|
En fait, il est possible d'importer du javascript grâce à une requête XHR. Et ce n'est pas forcement une mauvaise idée dans certain cas. En utilisant une requête synchrone quipermettra en plus de stopper le code en attendant le fichier. Le problème est de savoir que lors du eval sur le fichier il y aura un problème de scope qui laisse penser que ca ne marche pas.
Si on a un fichier qui déclare une fonction (ou classe), on ne les verra pas ensuite contrairement à un alert("toto") qui sera exécuter immédiatement et qui fonctionnera. Le fichier à importer Code : JavaScript
--------- Le code de js d'import Code : JavaScript
ne fonctionnera pas (sous ie en tout cas) pour que cela fonction il faut modifier le fichier Code : JavaScript
Et là ca fonctionnera. Quand à la performance de la fonction eval, le problème est la plupart du temps négligeable. Evidement je mettrais pas dans une boucle à 1000 itérations l'évaluation d'un fichier de 50ko... |
||||||
Jean-MichelNonglaire
|
# Posté le 23/03/2010 à 16:24:51 | ||||||
![]()
|
Dans un fichier js appelé "montage.js" j'ai importé un script js avec
Code : JavaScript
J'ai également changé la facon d'écrire mes fonctions dans le script de base du genre: Code : JavaScript
Par contre, les variables qui se trouvent dans le fichier importé (test.js) ne sont pas prises en compte dans mon js de base (montage.js). Par exemple, dans mon fichier importé (test.js) j'ai la variable : var statut = "ferme"; Si je fais, dans mon fichier de base (montage.js): alert(statut); cela ne fonctionne pas. Comment rendre des variables "universelle" afin qu'elles soient prises en compte dans mon fichier montage.js ? |
||||||
Retour au forum "Javascript" ou à la liste des forums
