IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Appel d'une fonction ou d'un fichier dans un autre fichier


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 10
    Points : 0
    Points
    0
    Par défaut Appel d'une fonction ou d'un fichier dans un autre fichier
    Bonjour a tous,

    Voici mon problème.
    J'ai un fichier js avec à l'interieur quatre fonctions que je souhaite séparer.
    Fichier1.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(blabla) {
     
    fonctiona;}
    if(blabla2){
     
    fonctionb;}
    J'ai essayé deux solutions sans succes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	Import("chemin + fichier1.js");
    			fonctiona();
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
           function include(fichier1.js){
    		  document.write("<script type='text/javascript' src='"+fichier1.js+"'></script>" );
    		  }
    A noté que je fais une extension pour firefox

    Je vous remercie

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    bonjour,

    Citation Envoyé par Huifortrack Voir le message
    Bonjour a tous,
    Voici mon problème.
    J'ai un fichier js avec à l'interieur quatre fonctions que je souhaite séparer.
    je n'ai pas (rien) compris...

    Ensuite :
    un document.write() dans une fonction = que des problèmes !
    donc oublie déjà document.write().

    Utilise aussi les balises [code] [/code] (bouton #) pour mettre en page ton code

  3. #3
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    J'ai un fichier js avec à l'interieur quatre fonctions que je souhaite séparer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ( blabla) { fonctiona ; }
    if ( blabla2 ) { fonctionb ; }
    if ( blabla3 ) { fonctionc ; }
    if ( blabla4 ) { fonctiond ; }
    Que voulez vous faire au juste ?

  4. #4
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Bonjour,

    essaye ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var $script = document.createElement("script");
     
    $script.src = ... ; // URL du script à charger
     
    $script.onerror = function( error ){
       console.log("échec lors du chargement du script", error);
    };
     
    $script.onload = function( ){
       ... // code à exécuter quand le script a fini de charger
    };
     
    // il faut insérer le script dans la page pour qu'il soit pris en compte
    document.documentElement.appendChild($script);
    Une remarque à propos de ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function include(fichier1.js){
    fichier1.js n'est pas un bon nom de paramètre car il y a une erreur de syntaxe à cause du point entre fichier1 et js.

    Les erreurs sont signalées dans les consoles. Comme tu développes une extension, je ne sais pas exactement si les erreurs arrivent dans la console Web (touche F12) ou dans la console du chrome (Ctrl+Maj+J). Je pense qu'il faut que tu essayes les deux.
    Quand ton script ne marche pas comme prévu, aie toujours le réflexe de regarder s'il n'y a pas un message d'erreur qui peut t'aider
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    Bonjour
    Je vous remercie tous pour vos réponses.

    Les fonctions en question récupère par exemple un élément du site visité. (Un truc tout bête du genre un titre)
    Effectivement ctrl+maj+j me montre bien l'erreur.
    Il s'agit de la fonction import qui n'existe pas a priori alors que
    https://developer.mozilla.org/fr/doc...uctions/import

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    var $script = document.createElement("script");
     
    $script.src = ... ; // URL du script à charger
          // j'ai mis le chemin du fichier
     
    $script.onerror = function( error ){
       console.log("échec lors du chargement du script", error);
    };
      // je ne comprends pas trop 
    $script.onload = function( ){t
            // de quel code il s’agit
       ... // code à exécuter quand le script a fini de charger
    };
     
    // il faut insérer le script dans la page pour qu'il soit pris en compte
    // dans le fichier contenant ma fonction ou le principal
    document.documentElement.appendChild($script);
    Désolé. Je ne suis pas très bon en js mais je retouche un code.
    Merci encore


    PS : pour être clair J'ai un gros fichier js

    avec des if(){script1}
    if(){script2}
    je veux les enlever les mettre ailleurs pour avoir
    if(){appel_script1}
    if(){appel_script2}

  6. #6
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bonjour.
    Pourquoi ne pas découper votre gros fichier JS en plusieurs routines.
    Ensuite dans vos pages vous appelez les seules routines dont vous avez besoin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script type="text/javascript" src="dossier_JS/routine_1.js"></script>
     
    var x = routine_1() ;

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    Sa ne fonctionne pas car mes deux fichiers sont en .js
    Je ne peux les tranformer en .html et ajouter les balises.

    <script type="text/javascript" etc
    J'ai essayé mais l’extension ne fonctionne plus

    Dans la console j'ai un erreur du type
    type error : argument 1 of Node.apprendChild is not an object
    Merci

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 670
    Points
    66 670
    Billets dans le blog
    1
    Par défaut
    Avec Jquery il y a getScript() ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    Pouvez vous m'ecrire la syntaxe .
    Je ne connais rien en revanche à Jquery

    Appelle t'on une fonction d'un autre script ou le script en lui même?

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 670
    Points
    66 670
    Billets dans le blog
    1
    Par défaut
    une fonction n'existe sur une page que si elle a été chargée => donc que si le script à été chargé sur la page
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    Du coup je peux me contenter d'appeler uniquement le script c'est suffisant pour moi.

  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 670
    Points
    66 670
    Billets dans le blog
    1
    Par défaut
    si tu as dans un fichier .js à part le bout de script voulu ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    C'est bien ça que je n'arrive pas a faire depuis deux jours..

  14. #14
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    pour être clair J'ai un gros fichier js
    avec des if(){script1}
    if(){script2}
    je veux les enlever les mettre ailleurs pour avoir
    if(){appel_script1}
    if(){appel_script2}


    C'est pas beaucoup plus clair pour moi


    En gros tu veux charger dynamiquement un script selon une condition ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function loadScript(url){
      var $script = document.createElement("script"); 
      $script.src = url;
      $script.onerror = function( error ){
       console.error("échec lors du chargement du script", error);
      };
      document.documentElement.appendChild($script);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(taCondition1){ loadScript("tonScript1.js"); }
    if(taCondition2){ loadScript("tonScript2.js"); }
    One Web to rule them all

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    Oui c'est bien cela.
    J'essaye demain, ta solution me parait tout a fait logique.
    Si sa ne marche pas je laisserai tout dans le même fichier.

    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if(taCondition1){ loadScript("content/addon/tonScript1.js"); }
    Je teste , merci

  16. #16
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    Citation Envoyé par Huifortrack Voir le message
    pour être clair J'ai un gros fichier js

    avec des if(){script1}
    if(){script2}
    je veux les enlever les mettre ailleurs pour avoir
    if(){appel_script1}
    if(){appel_script2}
    pour être sûr que tout le monde se comprend : un fichier de scripts javascript externe doit contenir des fonctions. Avec le code que tu postes, j'ai l'impression que tes if ne sont pas inclus dans une fonction.

  17. #17
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127

  18. #18
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Citation Envoyé par Huifortrack Voir le message
    Il s'agit de la fonction import qui n'existe pas a priori alors que
    https://developer.mozilla.org/fr/doc...uctions/import
    La doc précise que :
    Implémentée sous : JavaScript 1.2, NES 3.0
    JavaScript 1.2, c'est de la préhistoire. Pour te donner une idée, Firefox 3 supportait JS 1.8. Et quelle est la version actuelle de Firefox ?
    D'après une rapide recherche, il semblerait que les instructions import et export ont été retirées du langage par la suite. Il en reste seulement des fossiles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var import; // SyntaxError: missing variable name
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  19. #19
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    C'est la version la plus a jour de firefox .

    Dans les if il y a des scripts a la base .

    Mais je peux appeler une fonction avec un argument vide . Je ne crois pas que c''est un soucis.
    Oui import ne marche pas..

    La derniere solution ne marche pas pour le moment.
    Rien dans la console pourtant..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
     
    function loadScript(url){
      var $script = document.createElement("script"); 
      $script.src = url;
      $script.onerror = function( error ){
       console.error("échec lors du chargement du script", error);
      };
      document.documentElement.appendChild($script);
    };



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
       if (gBrowser.currentURI.host === 'www.blabla.com') {
    loadScript("titi/toto.js");      }

  20. #20
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2014
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    J'ai finalement tous laissé dans le même fichier.. Merci quand même j'ai appris pas mal de chose

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/03/2015, 08h27
  2. Réponses: 0
    Dernier message: 17/11/2012, 17h51
  3. Réponses: 21
    Dernier message: 24/11/2011, 02h30
  4. Copier une partie du contenue d'un fichier dans un autre fichier
    Par jvkd59 dans le forum VB 6 et antérieur
    Réponses: 21
    Dernier message: 18/09/2010, 15h49
  5. Réponses: 4
    Dernier message: 05/01/2009, 22h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo