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 :

Rafraichir une frame


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 684
    Points : 153
    Points
    153
    Par défaut Rafraichir une frame
    Bonjour;

    Comment rafraichir ma frame de gauche qui
    contiens mon menu et l'affichage du compteur
    de visites (nombre contenu dans un fichier txt)

    J'ai effectué des tests, le compteur se met a
    jour automatiquement

    Le soucis, c'est que toute la navigation s'effectue
    dans la frame de droite et le raffraichissement
    agit également sur celle-ci.

    Comment actualiser le compteur sans interférer
    sur les autres frames ?

    Merci de m'aider

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,
    Pourquoi ne pas utiliser AJAX pour ne rafraichir que le compteur et non pas toute la Frame.
    Code JAVASCRIPT : 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
    function createXHR() 
    {
        var request = null;
            try {
                request = new ActiveXObject('Msxml2.XMLHTTP');
            }
            catch (err2) {
                try {
                    request = new ActiveXObject('Microsoft.XMLHTTP');
                }
                catch (err3) {
    		try {
    			request = new XMLHttpRequest();
    		}
    		catch (err1) 
    		{
    			return request;
    		}
                }
            }
        return request;
    }
    function compter() 
    {
    	var xhr=createXHR();
    	xhr.open("GET", "compteur.txt",true);
    	xhr.onreadystatechange = function()
    		{ 
    		if (xhr.readyState == 4 && xhr.status == 200) 
    			{
    				document.getElementById('compteur').innerHTML=xhr.responseText;
    			}
    		}
    	xhr.send(null); 
    }
    setInterval('compter()',10000);
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <p id="compteur"></p>

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 684
    Points : 153
    Points
    153
    Par défaut
    Bonjour andry.aime,

    Merci de m'avoir répondu
    Exact, ce n'est que le compteur que je veut raffraichir

    Mais ne connaissant pas l'Ajax, comment intégrer a
    votre code l'appel de mon compteur en PHP ?

    Mon code pour lire et afficher le compteur en PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?PHP
    $file = fopen("stats/compteur_v.txt","r+");
    $num = fgets($file,4096);
    fclose($file);
     
    echo '</center></b>';
    echo $num;
    ?>
    A vous lire

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Tu peux directement appeler le fichier txt.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.open("GET", "stats/compteur_v.txt",true);
    Ou le fichier php en modifiant l'adresse dans le second paramètre de xhr.open

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 684
    Points : 153
    Points
    153
    Par défaut
    ok pour la modif de xhr.open (chemin du fichier)

    Mais quelle instruction pour centrer et afficher
    le compteur car je ne comprends pas le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <p id="compteur"></p>
    A vous lire

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    C'est dans ce paragraphe qu'on va mettre le résultat du requête ajax.
    document.getElementById('compteur').innerHTML=xhr.responseText;
    Tu le mets à l'endroit où tu veux placer le compteur, centrer avec css ou la balise center.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 684
    Points : 153
    Points
    153
    Par défaut
    Le script tourne sans erreur mais lecompteur n'est pas affiché !
    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
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE> Test Compteur </TITLE>
     
    <BODY>
     
    <script type="text/javascript" src="ajax2.js">
    function createXHR() 
    {
        var request = null;
            try {
                request = new ActiveXObject('Msxml2.XMLHTTP');
            }
            catch (err2) {
                try {
                    request = new ActiveXObject('Microsoft.XMLHTTP');
                }
                catch (err3) {
    		try {
    			request = new XMLHttpRequest();
    		}
    		catch (err1) 
    		{
    			return request;
    		}
                }
            }
        return request;
    }
    function compter() 
    {
    	var xhr=createXHR();
        xhr.open("GET", "stats/compteur_v.txt",true);
    	xhr.onreadystatechange = function()
    		{ 
    		if (xhr.readyState == 4 && xhr.status == 200) 
    			{
    				document.getElementById('compteur').innerHTML=xhr.responseText;
    			}
    		}
    	xhr.send(null); 
    }
    setInterval('compter()',10000);
    </script>
     
    <?php
    echo "Visiteurs : ";
    ?>
     
    <CENTER>
    <p id="compteur"></p>
     
    </BODY>
    </HTML>

  8. #8
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    1- Le code javascript doit être dans le head.
    2- Les balises head et center ne sont pas fermé.
    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
    <html>
    <head>
    <TITLE> Test Compteur </TITLE>
     <script type="text/javascript" src="ajax2.js">
    function createXHR() 
    {
        var request = null;
            try {
                request = new ActiveXObject('Msxml2.XMLHTTP');
            }
            catch (err2) {
                try {
                    request = new ActiveXObject('Microsoft.XMLHTTP');
                }
                catch (err3) {
    		try {
    			request = new XMLHttpRequest();
    		}
    		catch (err1) 
    		{
    			return request;
    		}
                }
            }
        return request;
    }
    function compter() 
    {
    	var xhr=createXHR();
        xhr.open("GET", "stats/compteur_v.txt",true);
    	xhr.onreadystatechange = function()
    		{ 
    		if (xhr.readyState == 4 && xhr.status == 200) 
    			{
    				document.getElementById('compteur').innerHTML=xhr.responseText;
    			}
    		}
    	xhr.send(null); 
    }
    setInterval('compter()',10000);
    </script>
    </head>
    <BODY onload="compter()">
    <?php
    echo "Visiteurs : ";
    ?>
    <CENTER>
    <p id="compteur"></p>
    </center> 
    </BODY>
    </HTML>

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 684
    Points : 153
    Points
    153
    Par défaut
    Après modif du code :
    Pas d'affichage erreur ligne 43
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <BODY onload="compter()">
    Seul le mot Visiteurs : s'affiche

  10. #10
    Membre actif Avatar de nod__
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 176
    Points : 226
    Points
    226
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    1- Le code javascript doit être dans le head.
    Je peux contester ? Vu que la réputation de la team javascript de chez Yahoo n'est plus a faire et qu'ils disent explicitement de mettre les scripts js en fin de page. Je me demande pour quelles raisons on doit mettre les <script> dans le head, sachant que la spec HTML n'interdit aucun des deux ?

    Best Practices for Speeding Up Your Web Site

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 684
    Points : 153
    Points
    153
    Par défaut
    J'ai refait un test en déplacant le fichier
    compteur_v.txt dans la racine du serveur, mais le
    résultat est le mème !

    Le compteur ne s'affiche pas

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 684
    Points : 153
    Points
    153
    Par défaut
    Re des tests
    j'ai remplacé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <SCRIPT type="text/javascript" src="ajax2.js">
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <SCRIPT language="javascript">
    Maintenant, le compteur s'affiche bien
    Mais il ne s'actualise pas

    Par contre, si j'efface les fichiers temporaires
    du navigateur, le compteur s'actualise.
    mais plus après

    Si je fait actualiser dans le navigateur, idem, pas d'actualisation

    Je touche au but, merci de votre aide

  13. #13
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    C'est un problème de cache.
    Essaye avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function compter() 
    {
    	var xhr=createXHR();
    	var a= new Date();
        xhr.open("GET", "stats/compteur_v.txt?time="+a,true);
    	xhr.onreadystatechange = function()
    		{ 
    		if (xhr.readyState == 4 && xhr.status == 200) 
    			{
    				document.getElementById('compteur').innerHTML=xhr.responseText;
    			}
    		}
    	xhr.send(null); 
    }

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 684
    Points : 153
    Points
    153
    Par défaut
    OK,

    Cela tourne sous XP mais pas en VISTA ?

  15. #15
    Rédacteur
    Avatar de Macmillenium
    Homme Profil pro
    Développeur front-end
    Inscrit en
    Mars 2008
    Messages
    2 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur front-end
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 2 333
    Points : 3 748
    Points
    3 748
    Par défaut
    Bonjour,

    Citation Envoyé par nod__ Voir le message
    Je peux contester ? Vu que la réputation de la team javascript de chez Yahoo n'est plus a faire et qu'ils disent explicitement de mettre les scripts js en fin de page.
    Effectivement et ce n'est pas parce que Yahoo le recommande
    Le fait d'appeler les scripts à la fin de la page permet de s'assurer que :
    • Le navigateur a parsé le document;
    • Tous les objets ont été créés;
    • Toutes les requêtes HTTP ont été exécutées;


    C'est donc recommandé pour des raisons de performance et d'accessibilité.

    Citation Envoyé par nod__ Voir le message
    Je me demande pour quelles raisons on doit mettre les <script> dans le head, sachant que la spec HTML n'interdit aucun des deux ?
    C'est juste la sémantique

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 684
    Points : 153
    Points
    153
    Par défaut
    Bonjour,

    Une autre méthode existerai-t'elle ?

    Peut-être en PHP ?

    Je fait mes tests sous XP, mais le vrai serveur est sous VISTA !

    Nous étions si près du but

    Encore un petit coup de main SVP

    Bonne journée à tous

  17. #17
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Tu l'as déjà testé sous Vista?
    ça devrait fonctionner.

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 684
    Points : 153
    Points
    153
    Par défaut
    Oui, j'ai testé sous VISTA

    Pas d'erreur, mais l'actualisation du compteur
    ne se fait pas.

    Si je fais actualiser la page oui j'ai l'actualisation
    du compteur mais relance le site en perdant la
    navigation sur celui-ci

    J'ai fait un petit test en PHP en testant le changement
    de minutes, mais c'est dans une boucle infinie et
    cela épuise mes recources système !

Discussions similaires

  1. [frame] Comment rafraichir une frame lorsque l'on veut?
    Par Ministar dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 10/10/2007, 18h02
  2. Rafraichir une frame
    Par masseur dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/08/2007, 17h34
  3. Rafraichir une Frame a partir d'un lien ?
    Par sara21 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/05/2007, 18h24
  4. Rafraichir une frame
    Par Galaad dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/08/2006, 08h13
  5. Rafraichir une Frame en cours d'éxécution
    Par Tandric dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 25/03/2006, 06h51

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