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 :

Inclure fichier selon conditions


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Par défaut Inclure fichier selon conditions
    Bonjour à tous,

    Je rencontre un petit soucis :
    Je me demandais quelle était la meilleure façon d'inclure un fichier javascript sous conditions.

    Je ne souhaite en effet pas réécrire tout mon code js dans cette page....
    J'ai essayé de procéder comme ceci mais ça ne semble pas correct :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <script type="text/javascript">
        if (typeof(s) == 'undefined') { 
          <script type="text/javascript" src="#chemin/monFichier.js"></script>
        }
    </script>

    Merci d'avance à tous pour votre aide et vos lumières.
    @+

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    Citation Envoyé par Xandler Voir le message
    Je me demandais quelle était la meilleure façon d'inclure un fichier javascript sous conditions.
    Le faire en PHP (sur le serveur, quoi)

    A+

  3. #3
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Par défaut
    Merci pour ta réponse,

    Par contre ma variable (ici s) est une variable javascript, je peux donc moyennement faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <script type="text/javascript">
        if (typeof(s) == 'undefined') { 
          <?php 
               include 'monFichier.js'; 
          ?>
        }
    </script>
    Tu supposais le faire entièrement en php ?
    Désolé je ne code pas vraiment régulièrement

    Encore merci

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par Xandler Voir le message
    Tu supposais le faire entièrement en php ?
    Oui oui
    Il te suffit de passer la valeur de ta variable JS (s) en paramètre dans l'url que tu utilises pour appeler ta page : ton PHP pourra la récupérer sans problème, et générer (ou non) l'include

    A+

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 313
    Par défaut
    Pour que ça marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <script type="text/javascript">
        if (typeof(s) == 'undefined') { 
          document.write('<script type="text/javascript" src="#chemin/monFichier.js"></script>');
        }
    </script>
    Oui oui... Y'a un document.write()
    (à défaut de currentNode)


    J'utilise ceci que je charge en tête par un fichier JSInclude.cls.js :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function JSInclude() { this.path=''; };
     
    JSInclude.path = function (path) { this.path = path; };
     
    JSInclude.include = function (scriptfile) {
    	document.write('<SCRIPT LANGUAGE="JavaScript" SRC="'+this.path+scriptfile+'"></SCRIPT>');
    };
    Mes débuts de script commencent comme ça (au besoin) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if( typeof JSInclude == 'undefined' ) { alert('JSInclude is needed.'); } else {
     
    if( typeof URIParameters == 'undefined' ) { JSInclude.include('URIParameters.cls.js'); }
     
    function JSParameters() {
            . . .
    	this.parms = new URIParameters(this.node.getAttribute('src'));
    }
     
    }//JSInclude
    Je dispose d'un bloc javascript pour les includes. Le path permet de lier global ou local applicatif.

  6. #6
    jnore
    Invité(e)
    Par défaut
    Citation Envoyé par Xandler Voir le message
    Bonjour à tous,

    Je rencontre un petit soucis :
    Je me demandais quelle était la meilleure façon d'inclure un fichier javascript sous conditions.

    Je ne souhaite en effet pas réécrire tout mon code js dans cette page....
    J'ai essayé de procéder comme ceci mais ça ne semble pas correct :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <script type="text/javascript">
        if (typeof(s) == 'undefined') { 
          <script type="text/javascript" src="#chemin/monFichier.js"></script>
        }
    </script>

    Merci d'avance à tous pour votre aide et vos lumières.
    @+
    Bonjour,

    Il ya moyen de le faire avec le dom.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <script type="text/javascript">
    if (typeof (s) == "undefined") 
        {
        var balise=document.createElement('script');
        balise.src="chemin/monFichier.js";
        document.body.appendChild(balise);
        }
    </script>

  7. #7
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par jnore Voir le message
    Il ya moyen de le faire avec le dom.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <script type="text/javascript">
    if (typeof (s) == "undefined") 
        {
        var balise=document.createElement('script');
        balise.src="chemin/monFichier.js";
        document.body.appendChild(balise);
        }
    </script>


    Évidemment préférable au document.write() ...

    Mais encore une fois, la logique voudrait que le serveur envoie au nav la page possédant déjà les liens adéquat ...

    A+

  8. #8
    jnore
    Invité(e)
    Par défaut
    Citation Envoyé par E.Bzz Voir le message

    Mais encore une fois, la logique voudrait que le serveur envoie au nav la page possédant déjà les liens adéquat ...

    A+
    On est d'accord !
    L'objectif de Xandler étant d'aller vite, je fais ce qui paraît le plus simple.

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 313
    Par défaut
    Arf...

    Pourquoi DOM dans ce cas est inapproprié ?

    Dans le cas de modification d'état de variables ou d'objets, effectuée à l'intérieur des scripts chargés en temps réel, tout votre code s'effondre.

    Typiquement, dans le cas d'un include 'à la DOM' de ce type, vous allez droit à de désagréables surprises.

    Il vaut mieux que l'include agisse au plus près de son déclenchement, plutôt que de le charger n'importe où dans la source. Ceci dans le but de respecter la séquence du script. Et c'est le but d'un include : Agir en amont de l'interpréteur (frontière assez flou sur du script, je l'accorde - Montage/exécution c'est peut-être plus clair).

    Le serveur peut avoir son utilité, mais il est bien sur absent en standalone.

    Enfin, dans le cas d'un échange strict de données entre client/serveur, il est plus utile de déléguer au client le chargement des Objets requis et qu'il prenne en charge lui-même ses procédures, ses contrôleurs.


    Je ne demande qu'à être convaincu de '...préférable à document.write()' qui apparait comme un leitmotiv, une récitation. Mais encore une fois, aucun argument valable n'est avancé, ni ici, ni ailleurs.
    C'est particulièrement déconcertant sur un forum comme celui-ci.
    Et pourtant, je reste demandeur :
    http://www.developpez.net/forums/d79...html-interdit/

Discussions similaires

  1. Extraction de données selon conditions entre 2 fichiers
    Par kemherar dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 08/05/2015, 15h00
  2. [Batch] Récuperation de fichier selon plusieurs conditions
    Par Maxspike dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 29/05/2014, 02h54
  3. Ouverture de fichier selon condition
    Par lunitrof dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/10/2009, 14h44
  4. [VB.NET] Changer de classe selon condition
    Par daner06 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/10/2004, 10h04
  5. DLLs chargées selon condition
    Par Benjamin GAGNEUX dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 12/08/2004, 18h14

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