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 :

Comment faire ?(impossible à formuler sans un exemple)


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de ToniConti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2009
    Messages : 245
    Par défaut Comment faire ?(impossible à formuler sans un exemple)
    Bonjour à tous,

    Après plusieurs tentatives échouées je me dis que le plus simple est de commencer mon explication par un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <script priority="1" type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" > </script>
    <script priority="2" type="text/javascript" src="https://serveurDansLeReseau/libs/jquery-ui.min.js" > </script>
    L'attribut "priority" n'existe pas par contre il me permet d'exprimer ce que je voudrais arriver à faire.
    En gros l'idée serait de pouvoir lire une librairie depuis le site google pour alléger le trafic réseau, mais si la connexion internet du client ne fonctionne pas, switcher vers une lecture de la librairie depuis un emplacement sur le réseau.

    Est-ce possible et comment faire ?

    Merci à tous pour vos lumières

  2. #2
    Invité
    Invité(e)
    Par défaut
    tu cree une variable apres le chargement de la page tu fait un teste de cette variable si elle existe c'est que le fichier a ete charge si ce n'est pas le cas il suffira de modifier le src de la balise script

  3. #3
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut suggestion de titre ^^
    Citation Envoyé par ToniConti Voir le message
    Comment faire ?(impossible à formuler sans un exemple)
    "Comment faire pour accéder dynamiquement à un script externe ?"

    ---

    Autre chose : as-tu anticipé le problème de Same Origin Policy ? (le fait que l'accès à un domaine différent ne puisse se faire que par l'intermédiaire de ton serveur)

    >>> en tout cas a priori il me semble que le choix du script devrait se faire soit à la génération de la page, soit par ajax, mais de toutes façons côté serveur... non ? ^^

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juillet 2010
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 96
    Par défaut
    Salut jai un debut de solution peut-etre,

    voici le code :

    javascript :
    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
     
    	<script language="javascript" type="text/javascript" >
    		var xmlHttpReq = false;
    		if (window.XMLHttpRequest) {
    			xmlHttpReq = new XMLHttpRequest();
    		}
    		else if (window.ActiveXObject) {
     
    			xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    		}
     
    		function addJS(file,i){
    			length = file.length
     
    			var cfile = file[i]
     
    			self.xmlHttpReq.open('POST', 'detectFile.php', true);
    			self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    			self.xmlHttpReq.onreadystatechange = function() {
    				if (self.xmlHttpReq.readyState == 4) {
    					if(self.xmlHttpReq.responseText == 'true'){
     
    						 creerJStag(cfile)
    					}else{
    						if(i<length){
     
    							addJS(file,i+1);
    						}else{
     
     
    						}
    					}
    				}
    			}
    			self.xmlHttpReq.send('file='+cfile);
    			return false;
    		}
     
    		function monCallback(){
    			alert($('body'));						 
    		}
     
    		function creerJStag(src){
    		 var baliseHead = document.getElementsByTagName("head")[0];
    		  var nouveauScript=document.createElement('script')
    		  nouveauScript.setAttribute("language","javascript")
    		  nouveauScript.setAttribute("type","text/javascript")
    		  nouveauScript.setAttribute("onLoad","monCallback()")
    		  nouveauScript.setAttribute("id","script")
    		  nouveauScript.setAttribute("src", src)
    		  nouveauScript.onLoad = monCallback
    		  baliseHead.appendChild(nouveauScript)
     
    		}
     
    		addJS(['ddd','https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js'],0);
     
    </script>
    le 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
     
    <?php
     
     
    $contenue = @file_get_contents($_POST['file']);
     
    if(empty($contenue)){
    	echo 'false';
    	die();
    }
     
    $response = '';
     
    foreach($http_response_header as $v){
    	$response .= $v	;
    }
     
    if(!preg_match('#javascript#',$response)){
    	echo 'false';
    	die();
    }
    	echo 'true';
     
    ?>
    explication :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    addJS(['ddd','https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js'],0);
    on envoie 2 parametre, un array contenant la liste de js a charger, et 0 qui ca servir d'iterateur pour la recursivite

    addJS() va en boucle effectuer une requete ajax vers le script php. le script php detecte si le fichier existe et si cest du javascrip, il renvoie 'true' ou 'false';

    addJS() va donc passer a travers sont array recu en parametre jusqua ce quil trouve le fichier correspondant, une foi trouver il va executer creerJStag()

    creerJStag() recoit comme parametre le src du fichier Js et creer une balise et la place dans le head

    si tu regardes dans l'attribut onLoad, je met un callback, cela sert a m'assurer que le js est charger avant de l'utiliser.

    Bon jai fait ca vite pour le fun, si javais a utiliser ce script jaurais un bon travail doptimisation a faire. Ce n'est donc pas la version la optimal qui soit.

    note : je n'ai tester que sous ff 3.6

  5. #5
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    joli exemple bravo

    @ToniConti : tu as besoin d'avoir la compatibilité IE6 ?

  6. #6
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juillet 2010
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 96
    Par défaut
    Oui meme si l'exemple peut marché en théorie je réitére de pas l'utiliser,

    apres 2-3 test, je m'appercoit que le temps de reponse dans onreadystatechange de mon httprequest est vraiment trop long et prive lutilisateur de $(window).ready et . onLoad...

    et aussi, le php utiliser dans lexemple à lui seul suffit. mais comment la question etait si ca se fait en javascript jme suis amuser un peu.

    Je me demande tout de meme sans requete ajax si cest fesable car jarrive a recuper quand quand le script est charger en assigant un callback a onLoad mais je ne peux pas savoir si le script est inchargeable.

    peut etre mettre un while qui attend le onload pendant un lapse de temp et passer au prochain js si il se passe rien, mais sa limplique encore de faire attendre le bon déroulement du script pour donner suite et gruger du temps de loading de lutilisateur.

    donc a moi davis contraire Je prétend que la seul bonne facon est avec un script serveur

  7. #7
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Citation Envoyé par RomainVALERI Voir le message
    >>> en tout cas a priori il me semble que le choix du script devrait se faire soit à la génération de la page, soit par ajax, mais de toutes façons côté serveur... non ? ^^
    Citation Envoyé par nault Voir le message
    donc a moi davis contraire Je prétend que la seul bonne facon est avec un script serveur
    On est donc bien d'accord

    Toni ? quel est ton langage serveur actuel ? (si tu en utilises déjà un ici bien sûr ^^)

Discussions similaires

  1. comment faire la conversion sans perdre d info
    Par tarikmahf dans le forum Langage
    Réponses: 3
    Dernier message: 14/03/2008, 11h35
  2. Comment faire un Iframe sans la barre horizontale ?
    Par Alexandrebox dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 01/04/2007, 23h16
  3. Réponses: 4
    Dernier message: 28/07/2006, 11h26
  4. Réponses: 14
    Dernier message: 27/07/2006, 14h40
  5. [Message] Comment faire un prompteur sans bruit
    Par Kylen dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 26/08/2005, 11h15

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