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 :

Rafraîchissement de l'image sans rafraîchir toute la page?


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Rafraîchissement de l'image sans rafraîchir toute la page?
    Bonjour, je me demandais s'il y avait moyen de rafraîchir l'image, soit de prendre la nouvelle version de l'image sur le serveur, sans pour autant rafraîchir toute la page. Voici un petit exemple de ce que je veux faire, mais qui, malheureusement ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <script language="javascript">
    function image() {
            var img = new Image();
            img.src = "0.png";
            document.getElementById(0).setAttribute("background",img.src);
        }
        setTimeout("image()",1000);
    }
    </script>
    Alors voilà, à chaque seconde je veux rafraîchir l'arrière-plan du tableau avec la nouvelle version de l'image et non celle gardé en mémoire lors du dernier rafraîchissement de toute la page.

    Des idées? C'est possible en javascript ou je vais devoir faire appel au AJAX...? Si vous avez des idées de langages qui le permettent, veuillez me le signaler s'il vous plaît. Merci.

  2. #2
    Membre averti

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2004
    Messages : 220
    Points : 322
    Points
    322
    Par défaut
    à chaque seconde je veux rafraîchir l'arrière-plan
    t'a pensé au temps de chargement ?

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Oublions le temps de chargement, ce n'est pas un problème.

  4. #4
    m@t
    m@t est déconnecté
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 172
    Points : 122
    Points
    122
    Par défaut
    As tu essayé comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function image() {
            var img = new Image();
            img.src = "0.png";
     
            document.getElementById('tab').backgroundImage = img.src;
     
        setTimeout("image()",1000);
    }
    et le tableau comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <table id="tab" style="background-image:url(../images/depart.png);">

  5. #5
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    L'image s'affiche très bien, si je change d'image, il y a aucun problème. Le problème est par exemple si je fais afficher l'image 0 en boucle et que sur le serveur, je modifie l'image 0, l'image affiché sur le site va rester l'ancienne version de l'image 0 qui c'est fait lors du dernier rafraîchissement complèt de la page. J'en conclue donc que le problème vient de la cache. Il load tous les images en cache lors du load de la page et qu'il faut rafraîchir la page pour que le cache se rafraîchisse.

    Le timeout fonctionne également très bien, si je fais un changement d'image dans l'arrière-plan de l'image 0 à l'image 1, sa fonctionne.

    Je ne crois pas qu'il aille une solution à tout ça, c'est pour cela je vous demande de l'aide :/. Merci.

  6. #6
    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 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    un aller retour serveur ???
    il y a eu un post y'a pas longtemps avec l'utilisation d'ajax pour des images ... mais je ne sais pas si c'est appliquable dans ton cas ...

  7. #7
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par Ravarin
    L'image s'affiche très bien, si je change d'image, il y a aucun problème. Le problème est par exemple si je fais afficher l'image 0 en boucle et que sur le serveur, je modifie l'image 0, l'image affiché sur le site va rester l'ancienne version de l'image 0 qui c'est fait lors du dernier rafraîchissement complèt de la page. J'en conclue donc que le problème vient de la cache. Il load tous les images en cache lors du load de la page et qu'il faut rafraîchir la page pour que le cache se rafraîchisse.

    Le timeout fonctionne également très bien, si je fais un changement d'image dans l'arrière-plan de l'image 0 à l'image 1, sa fonctionne.

    Je ne crois pas qu'il aille une solution à tout ça, c'est pour cela je vous demande de l'aide :/. Merci.
    Il faut mettre un header HTTP correct (pragma no-cache et Expire 0) sur ton image pour que ça fonctionne. Et pour ça, soit tu configures ton serveur web (IIS ou Apache?) soit tu créé une page coté serveur (PHP ou JSP) qui renvoit les bons headers avec l'image après.

    Je ne vois pas vraiment ce qu'Ajax vient faire dans l'histoire

  8. #8
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    bah AJAX permettrai de rafraichir uniquement l'image, et non pas la page entière... Non ?

  9. #9
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par titoumimi
    bah AJAX permettrai de rafraichir uniquement l'image, et non pas la page entière... Non ?
    Euh, non, je ne vois vraiment pas comment.... Je veux bien qu'on m'explique. En faisant transiter le flux binaire de l'image via une requete HTTP Et on l'integre dans la page de quelle façon

    Pour moi, le javascript et le binaire, c'est pas bon.

  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 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    ben justement j'ai vu un post là dessus y'a pas très longtemps que je ne retrouve pas, il s'agissant bein en effet de flux binaire ...
    Et le type avait bien son image dans sa page ...

  11. #11
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par SpaceFrog
    ben justement j'ai vu un post là dessus y'a pas très longtemps que je ne retrouve pas, il s'agissant bein en effet de flux binaire ...
    Et le type avait bien son image dans sa page ...
    Ben j'achete alors. Il est ou ce post?

  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 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    je pensais même que c'était toi qui y avait répondu ...
    je crois que c'était sur html ...
    je recherche ...

  13. #13
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par SpaceFrog
    je pensais même que c'était toi qui y avait répondu ...
    Celui qui parlait d'images et d'ajax et ou j'avais répondu, c'était pour dire que Ajax n'avait rien à voir avec le problème

    Style ce post:
    http://www.developpez.net/forums/vie...615736#2615736

    Ma position n'a pas changé

  14. #14
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    avec AJAX, tu appelle une page HTML qui contient juste ta balise image, avec comme cible le div où est déjà contenu ton image...

    Si ca ca te la rafraichit pas, faudra me réexpliquer AJAX

    EDIT : à supposer qu'en javascript, il y ai moyen d'exécuter une fonction de façon cyclique, mais je ne pense pas que ca pose de gros soucis...

  15. #15
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par titoumimi
    avec AJAX, tu appelle une page HTML qui contient juste ta balise image, avec comme cible le div où est déjà contenu ton image...

    Si ca ca te la rafraichit pas, faudra me réexpliquer AJAX

    Lol, le fait de changer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img src="blabla.jpg">
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img src="blabla.jpg">
    Provenant d'une requete Ajax ne changera certainement pas l'image

    A mon avis, c'est pas Ajax qu'il faut réexpliquer, mais HTML..... Le code HTML ne contient qu'une indication de localisation de l'image. En gros tu dis au navigateur, ici affiche l'image qui habite au 19 rue du chat qui louche. Le nacigateur va à l'adresse et cherche l'image.
    Si avec ajax tu changes la balise image (au simplement avec javascript, ce que fait le monsieur dans sa question, ajax n'a auncun intéret ici), tu lui dit juste, finalement, je veux que tu me mettes ici l'image qui habite au 19 rue du chat qui louche. La le navigateur se dit, je vais aller cherche l'image. Sauf qu'il y a déjà été et l'a encore en cache, et comme il est du genre flemmard, il va prendre l'image qu'il a en cache plutot que de retourner la chercher.

    Donc pas d'Ajax possible dans ce cas. Dans la norme HTML, les images ne sont pas envoyées avec la page. La page ne contient que les adresses, charge au navigateur de se débrouiller. C'est ce qui fait que les navigateurs texte (type Lynx) fonctionne bien plus vite: ils ne vont pas chercher les images.

  16. #16
    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 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Milles excuses DenisC c'est bien de ce post là dont je parlais ...
    Ma mémoire me joue des tours, j'étais persuadé que c'était encore un coup d'ajax ... mais en effet ce serait monter une usine à gaz titou ... une page dédiée à l'image

    sinon un truc bien crad: un iframe ?

  17. #17
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par SpaceFrog
    sinon un truc bien crad: un iframe ?
    Quelque soit la technique, l'important c'est les headers HTTP.

    LA solution la plus propre, c'est la configuration du serveur (mais avec Apache c'est loin d'être une partie de plaisir, et sous IIS, aucune idée).

    La plus simple, je pense que c'est une page PHP qui wrappe l'image....

  18. #18
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    rahhh, ca me contrarie fortement tout ca

    même en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
    dans ma page (et en ayant vidé le cache), il refuse de me recharger l'image le bougre

  19. #19
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    Bon allez, c'est fait, sans PHP, sans AJAX, juste en javascript...

    http://titoumimi.free.fr/rafraichir_image.zip

    l'astuce, c'est de savoir qu'afficher toto.jpg?123 et toto.jpg?456 ca recharge complètement l'image à partir du serveur ;-)


    (Merci au passage à SF pour son coup de main javascript)

    Il suffit dez modifier l'image, et de cliquer sur le reload, et hop, la nouvelle version toute fraiche qui s'affiche ;-)

  20. #20
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par titoumimi
    rahhh, ca me contrarie fortement tout ca

    même en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
    dans ma page (et en ayant vidé le cache), il refuse de me recharger l'image le bougre
    Rajoute un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <META HTTP-EQUIV="expires" CONTENT="0">
    Ca aide, surtout pour IE..... Mais il faut mettre ces indications dans l'entete HTTP de l'image, pas de la page.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Rafraîchir un contenu sans rafraîchir toute la page
    Par Gwen_59 dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 10/04/2012, 09h11
  2. Réponses: 2
    Dernier message: 20/05/2009, 18h52
  3. envoyer un formulaire sans charger toute la page
    Par kiranis dans le forum Langage
    Réponses: 1
    Dernier message: 10/06/2008, 15h26
  4. Réponses: 5
    Dernier message: 19/03/2008, 03h44
  5. IFRAME rafraichit sans rafraichir toute la page
    Par yvon_huynh dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 12/02/2008, 22h20

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