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

Langage PHP Discussion :

AJAX + Innerhtml + img => Bug sous IE


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Par défaut AJAX + Innerhtml + img => Bug sous IE
    Salut à tous,

    Il existe un bug sous IE qui commence à me saouler!
    http://ahinea.com/en/tech/ie-dhtml-image-caching.html

    Site de Microsoft:
    http://support.microsoft.com/default...b;en-us;319546
    D'ailleurs pour l'anectote, chez Microsoft, ils disent qu'ils ont fait expres mais parlent aussi de "symptomes" et de "résolution", allez comprendre

    La seule solution que j'ai trouvé est de passé par mod_expires.c sur mon serveur apache mais je ne veux pas l'installer.

    Voici le code pour tester le bug:

    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
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    	<title>Untitled</title>
    </head>
    <script language="JavaScript">
    	function show_pictures()
    	{
    		var str		=	'';
    		var ptrn	=	'<img src="test.png">';
    		var d		=	document.getElementById('panel');
     
    		for (var i=0; i<5000; i++) {
    			str	+=	ptrn;
    		}
    		d.innerHTML	=	str;
    	}
    </script>
    <body>
     
    <img src="test.png">
    <input type="Button" value="Go" onClick="show_pictures()">
    <div id="panel"></div>
     
    </body>
    </html>
    Quelqu'un à déjà réussi à trouver une solution ?
    Merci !

    déplace par denisC depuis le forum Javascript

  2. #2
    Expert confirmé

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

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

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut Re: AJAX + Innerhtml + img => Bug sous IE
    Citation Envoyé par GregPeck
    Quelqu'un à déjà réussi à trouver une solution ?
    J'ai déjà rencontré ce problème, mais je n'avais pas trouvé autant de ressources sur le sujet que toi. pour tes liens.

    Sinon, pour la solution, à mon avis, il faut prier pour que ça marche mieux dans IE7, en consommant de la bande passante en attendant

  3. #3
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    j'ai contourné ce problème en ayant mis la balise image sur la page et en ne modifiant que le src dynamiquement en retour de xmlhttprequest ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre chevronné Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Par défaut Re: AJAX + Innerhtml + img => Bug sous IE
    Citation Envoyé par denisC
    Sinon, pour la solution, à mon avis, il faut prier pour que ça marche mieux dans IE7, en consommant de la bande passante en attendant
    J'ai installé IE7 pour vérifier et le bug y est toujours présent.
    Et puis je ne peux pas me permettre au niveau de ma bande passante, car c'est pour appli web et je peux avoir plus de 2000 images qui se chargent. Et puis c'est aussi que c'est très lent à l'affichage!

    Citation Envoyé par SpaceFrog
    j'ai contourné ce problème en ayant mis la balise image sur la page et en ne modifiant que le src dynamiquement en retour de xmlhttprequest ...
    Ok c'est une solution mais si je pouvais résoudre le problème sans être obligé de rechanger toutes mes pages, je préfererais....
    Et encore, je ne peux pas me permettre de créer 10000 balises img parce que mon retour peux m'en envoyer autant...

  5. #5
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    1000 balises images en retour ...
    avec une centaine je rame déja, j'ai mis un progress % pour faire patienter juste histoire de dire que c'est pas planté ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre chevronné Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Par défaut
    J'ai trouvé des infos concernant l'utilisation particulière des entetes HTTP pour corriger le problème, mais je n'ai pas réussi.
    Personne n'a réussi à le faire ?

  7. #7
    Expert confirmé

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

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

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par GregPeck
    J'ai trouvé des infos concernant l'utilisation particulière des entetes HTTP pour corriger le problème, mais je n'ai pas réussi.
    Personne n'a réussi à le faire ?
    Si, c'est faisable avec un header HTTP Expires, comme décris dans tes liens. Mais apparement, tu ne voulais pas utiliser le mod de apache....

    Si tu as un langage coté serveur (PHP, J2EE) tu peux probablement mettre ces headers en place sans utiliser le mod d'apache.

  8. #8
    Membre chevronné Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Par défaut
    Citation Envoyé par denisC
    Si tu as un langage coté serveur (PHP, J2EE) tu peux probablement mettre ces headers en place sans utiliser le mod d'apache.
    Oui en effet je travaille en php, et c'est justement l'implémentation de ces entêtes que je n'arrive pas à faire fonctionner.
    Enfin, mettre des entetes ne pose pas de problème mais ca ne change pas le résultat.

  9. #9
    Expert confirmé

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

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

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par GregPeck
    Oui en effet je travaille en php, et c'est justement l'implémentation de ces entêtes que je n'arrive pas à faire fonctionner.
    Enfin, mettre des entetes ne pose pas de problème mais ca ne change pas le résultat.
    Je te conseille de passer au forum PHP, ou ils seront mieux te répondre que moi.

    Globalement, tu dois appeller un fichier php au lieu de ton image (par exemple image.php) qui mettes en place l'entete Expire avec un temps positif (mais faut pas exagerer non plus), le type MIME qui va bien, et qui inscrive le contenu de l'image dans le flux HTTP.

    Forum PHP

  10. #10
    Membre chevronné Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Par défaut
    Ah ouai ok, je comprend, mes headers je les placais au niveau de ma page appelante.

    Je vois ce que tu veux dire. Je test et j'espere revenir te dire que ça fonctionne.
    Si c'est pas le cas, je passerais au forum php.

  11. #11
    Membre chevronné Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Par défaut
    Ca ne fonctionne pas non plus, j'ai beau passer un Expires, ca ne fonctionne pas mieux. En gros mon code donne ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	header("Content-Type: image/gif");
    	header("Expires: Mon, 13 Feb 2006 09:00:27 GMT");
    Mais à mon avis ça bug tjs a cause d'IE et pas à cause de mon code PHP qui est on ne peux plus simple.
    Peux être que je n'ai pas bien compris les headers à envoyer.


    PS: Si tu pense qu'il est préférable de déplacer ce topic, je te laisse seul juge...

  12. #12
    Expert confirmé

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

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

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par GregPeck
    Ca ne fonctionne pas non plus, j'ai beau passer un Expires, ca ne fonctionne pas mieux. En gros mon code donne ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	header("Content-Type: image/gif");
    	header("Expires: Mon, 13 Feb 2006 09:00:27 GMT");
    Et après la mise en place des ces headers, tu envoies l'image, c'est bien ça?
    Et quand tu rappelles l'image tu le fais toujours en utilisant cette même adresse .php?

    Et a l'affichage, il n'y a aucun mieux?

    Est-ce que tu as vérifé dans ton serveur pour voir comment il répondait aux demandes d'images?

    Sinon, pour le forum PHP, c'est pour toi, il y aura peut-être plus de monde, plus calé sur HTTP par la-bas....

  13. #13
    Membre chevronné Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Par défaut
    Citation Envoyé par denisC
    Et après la mise en place des ces headers, tu envoies l'image, c'est bien ça?
    Exactement

    Citation Envoyé par denisC
    Et quand tu rappelles l'image tu le fais toujours en utilisant cette même adresse .php?
    Oui

    Citation Envoyé par denisC
    Et a l'affichage, il n'y a aucun mieux?
    Non

    Citation Envoyé par denisC
    Est-ce que tu as vérifé dans ton serveur pour voir comment il répondait aux demandes d'images?
    Oui, aucun changement il répond par 304 (Not Modified)

    Citation Envoyé par denisC
    Sinon, pour le forum PHP, c'est pour toi, il y aura peut-être plus de monde, plus calé sur HTTP par la-bas....
    Oui ok, mais je ne vais pas faire de double-post, alors je veux bien que tu le déplace stp.

Discussions similaires

  1. Ajax TabContainer le cadre BUG sous FireFox ?
    Par gregcat dans le forum ASP.NET
    Réponses: 2
    Dernier message: 08/10/2007, 15h17
  2. [C#] Bug sous Mozilla Firefox
    Par stailer dans le forum ASP.NET
    Réponses: 7
    Dernier message: 18/04/2007, 10h39
  3. innerHTML qui bug sous IE
    Par krolineeee dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/06/2006, 16h28
  4. [WebForms][WebParts et Skins] Bug sous IE
    Par stailer dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 03/01/2006, 16h35
  5. Bug sous builder
    Par Colinbayard dans le forum C++Builder
    Réponses: 3
    Dernier message: 12/01/2005, 09h45

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