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 :

inclusion conditionnelle d'un script javascript


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Par défaut [Résolu] inclusion conditionnelle d'un script javascript
    Bonjour !

    Je voudrais inclure un script javascript extérieur (une api diigo) en fonction d'une condition, ce qui fait que je ne peux pas utiliser le traditionnel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript" src="script" ></script>
    J'ai trouvé sur le web une fonction qui fait cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script type="text/javascript">
    			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);
    			}
    			include('http://www.diigo.com/roll2/linkrolls?v=3&username=thibaudoc&l_type=0&count=10&desc=1&style=standard&title=Trace%20%26%20Internet&tags=trace');
    		</script>
    Malheureusement, elle fonctionne bien dans ma console, mais pas sur mon site !
    Pour info, mes scripts sont un peu (trop?) imbriqués : il s'agit d'un fichier php qui inclut du code html à l'intérieur duquel j'utilise un script javascript, mais c'est une contrainte de mon CMS.

    Merci de l'aide,
    Thibaud.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Tant que la balise head n'est pas fermée, tu ne peux pas la manipuler...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    window.onload = function(){include('http://www.diigo.com/roll2/linkrolls?v=3&username=thibaudoc&l_type=0&count=10&desc=1&style=standard&title=Trace%20%26%20Internet&tags=trace');
    }
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Par défaut
    Salut Bovino !
    Merci de ta réponse. Je n'ai malheureusement (pour moi) pas ton expérience, je ne vois pas ce que tu veux dire... Si je remplace la ligne include(url) par la tienne, le window.load charge bien la fonction, mais celle-ci prend toute la fenêtre, alors qu'il ne s'agissait d'afficher le résultat que dans la boîte de la page dédiée... La balise head est utilisée par le CMS, donc je ne l'ai pas ajoutée dans mon script html, ai-je bien fait ?

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    La seule chose que j'ai changé, c'est que ta fonction est appelée au moment où elle pourra être exécutée sans provoquer d'erreur.
    Si ensuite le résultat n'est pas celui que tu souhaites, je n'y peux rien...
    Ou alors, il faut essayer d'expliquer ce que tu essayes de faire.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Par défaut
    Merci de ton aide. Comme tu me l'as demandé, je t'explique ce que j'essaies de faire.
    Sur cette page, tu peux voir ce que j'essaie de faire. Pour afficher la sidebar de droite, un fichier php s'exécute, nommé sidebar.php, à l'intérieur du CMS dokuwiki. Ce fichier est en fait un script html qui affiche des tweets (marche pas avec IE) et des signets diigo. Or, je ne veux pas que les signets s'affichent en fonction des paramètres de l'url. Ça fonctionne bien pour twitter car le script d'affichage est interne, seul un objet de données externe est chargé. En revanche, pour diigo, le script d'affichage est externe, donc je veux ne le lancer que si mon test se réalise.
    Voici l'intégralité du script sidebar.php :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    <html>
    	<script type="text/javascript" src="http://widgets.twimg.com/j/2/widget.js"></script>
    	<script type="text/javascript">
    		try {
    		// the test above can use a black list of namespaces to not show the sidebar
    		var url = String(document.location);
    		var test = url.replace(/id=trace-libre:auteur:cv/,'');
    		if (!document.all && typeof(TWTR) != 'undefined' && String(test) === String(url)) {
    			var uneDate = '24/02/2009';
    			var elem = uneDate.split('/');
    			jour = elem[0];
    			mois = elem[1];
    			annee = elem[2];
    			new TWTR.Widget({
    			  version: 2,
    			  type: 'profile',
    			  rpp: 10,
    			  interval: 6000,
    			  width: 150,
    			  height: 140,
    			  theme: {
    			    shell: {
    			      background: '#bbbbbb',
    			      color: '#000000'
    			    },
    			    tweets: {
    			      background: '#dddddd',
    			      color: '#000000',
    			      links: '#444444'
    			    }
    			  },
    			  features: {
    			    scrollbar: false,
    			    loop: false,
    			    live: false,
    			    hashtags: true,
    			    timestamp: true,
    			    avatars: false,
    			    behavior: 'all'
    			  }
    			}).render().setUser('trace_libre').start();}
    		} catch(e) {
    			alert(e)};
    	</script>
     
    	<div class="footerinc" >
    		<div id="diigo_linkroll" >
    		<a target="_blank" id="linkroll_title" href="http://www.diigo.com/user/thibaudoc">Traces</a>
     
    		<script type="text/javascript">
    			// alert("test javascript");
    			var url='http://www.diigo.com/roll2/linkrolls?v=3&username=thibaudoc&l_type=0&count=10&desc=1&style=standard&title=Trace%20%26%20Internet&tags=trace';
    			// 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);
    			// }
    			// window.onload = function(){include('http://www.diigo.com/roll2/linkrolls?v=3&username=thibaudoc&l_type=0&count=10&desc=1&style=standard&title=Trace%20%26%20Internet&tags=trace');
    			//};
    		</script>
     
    		</div>
    		<br/>
    		<div id="diigo_linkroll" >
    			<a target="_blank" id="linkroll_title" href="http://www.diigo.com/user/thibaudoc">Interfaces</a>
    			<script type="text/javascript" src="http://www.diigo.com/roll2/linkrolls?v=3&username=thibaudoc&l_type=0&count=10&desc=1&style=standard&title=Trace%20%26%20Internet&tags=usability" ></script>
    		</div>
    	</div>
    </html>
    Merci,
    Thibaud.

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Par défaut
    Hello,
    Voici la réponse, c'est très simple !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(condition) document.write('<script type="text/javascript" src="http://www.diigo.com/roll2/linkrolls?v=3&username=thibaudoc&l_type=0&count=10&desc=1&style=standard&title=Trace%20%26%20Internet&tags=trace"><\/script>');

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Inclusions conditionnelles et/ou paramétrables de scripts js
    Par j.p.mignot dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 17/01/2008, 18h41
  2. Probleme avec un script javascript->php
    Par leluis dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/03/2006, 15h32
  3. aide pour un script javascript
    Par speedylol dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 22/03/2006, 14h28
  4. utiliser un recordset dans un script javascript
    Par insect INC dans le forum ASP
    Réponses: 4
    Dernier message: 10/10/2005, 19h29
  5. [PHP-JS] Php dans un script javascript
    Par nebule dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 30/11/2004, 10h38

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