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 :

innerHTML dans IE7


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 157
    Par défaut innerHTML dans IE7
    bonjours,
    je vous raconte mon histoire , j'ai une page html avec un <div id=indicateur></div> ce div est vide au départ. pour le remplir j'utilise ajax pour générer du code html puis je rajoute l'html que je récupère dans ce div.

    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
    function charge_indic(indic,distance3,lin)
    {
    	document.getElementById("indicateur").innerHTML="<center><p>Chargement</p><img src=\"images/anim_attente.gif\"/></center>";
    	document.getElementById("regression").innerHTML="";
    	var xhr = getXMLHttpRequest();
    	xhr.onreadystatechange = function() {
    		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
    			affiche(xhr.responseText);
     
    		}
    	};
    	date1=new Date().getTime();
    	xhr.open("GET", "http://127.0.0.1:8080/traces2/indicateur.jsp?indic="+indic+"&distance3="+distance3+"&lin="+lin+"&ignoreMe=" +date1 , true);
    	xhr.send(null);
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function affiche(reponse)
    {
    	document.getElementById("indicateur").innerHTML=reponse;
    }
    bon tous marche bien jusqu'a maintenant et sur les deux navigateurs fireFox et IE7. sauf une chose, la page "indicateur.jsp" me retourne un bouton avec un déclencheur onclick="alert('hello')". lorsque je clique sur ce bouton sous fireFox ça marche très bien mais pas du tous sur IE7 ,
    il me dit "erreur sur la page". je pense qu'il ne reconnait pas le html que je rajoute a ma page.
    es qu'il ya une solution ?, ou bien je dois changer toute l'architecture de mon système.
    merci d'avance.

  2. #2
    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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    créer un element avec innerhtml est risqué ...

    http://www.developpez.net/forums/d53...ynamique-form/
    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 !

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 319
    Par défaut
    Risqué mais tant qu'Internet Explorer dominera sur le marché ça restera une coutume justifiée pour des raisons de performance, hélàs.

    Autrement, saidgrd, jette un oeil à l'attribut "defer" de l'élément "script" pour le cas d'IE. Je pense que ça va te mettre sur une piste...

    (Je parlerais bien de prototype.js encore une fois mais je vais me faire taper sur les doigts... Allez, je m'y risque : String#evalScripts. )

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 157
    Par défaut
    ok, , je vais voir tous ça. merci...

  5. #5
    Membre habitué
    Inscrit en
    Juin 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 8
    Par défaut
    bonjour saidgrd,

    j'ai eu le même problème avec Internet Explorer 7, et comme par hasard je me suis tombé sur cette discussion.
    Si le problème a été réglé explique nous un peu.

    Ton binome.

  6. #6
    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
    Citation Envoyé par Oscar Hiboux Voir le message
    Risqué mais tant qu'Internet Explorer dominera sur le marché ça restera une coutume justifiée pour des raisons de performance, hélàs.
    Je ne suis pas trop d'accord. IE n'empêche en rien l'insertion d'éléments via les méthodes du DOM qui sont, quel que soit le navigateur, plus performantes que innerHTML.

    @saidgrd : Dans ton cas, n'oublie pas que les attributs onévénement sont du JavaScript, donc à priori non pris en compte lors du innerHTML.
    Dans ton cas, une solution simple pourrait être d'ajouter le bouton sans le onclick avec innerHTML si tu y tiens, puis d'ajouter le onclick dans le callback de ta requête Ajax :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function affiche(reponse)
    {
    	document.getElementById("indicateur").innerHTML=reponse;
    	document.getElementById("ton_bouton").onclick=function(){alert('Hello');};
    }
    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

  7. #7
    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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    Risqué mais tant qu'Internet Explorer dominera sur le marché ça restera une coutume justifiée pour des raisons de performance, hélàs.
    coutume justifiée ... Bref ...


    Et niveau performance... la preuve en est qua cela ne fonctionne pas rien ne vaudra jamais le DOM pour le meilleur prise en compte crossbrowser des élements créés dynamiquement et ainsi que de tous leurs evènements et propriétés.
    Après moi ce que j'en dis, vous codez bein comme vous voulez en laissant la part belle à IE et en l'encourageant à continuer en marge des normes avec du propriétaire ...
    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 !

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 319
    Par défaut
    @Bovino, SpaceFrog : Au niveau des performances je doute que ça ait beaucoup évolué pour IE6/7. Ça fait un moment que je n'ai pas mesuré ça car j'utilise une couche d'abstraction pour ce genre de choses mais en 2006 je me souviens avoir poussé l'usage du code client abusivement (c'était presque malsain ) dans un projet de R&D. L'utilisation de innerHTML était bien plus concluante (XX%, voire XXX%). Maintenant, si on ne parle que des navigateurs qui n'ont pas de "navigateur" que leur nom, oui, l'usage de innerHTML pour des questions de performances ne présente plus spécialement d'avantage. Par contre, comment faites-vous pour insérer dynamiquement du contenu généré par le serveur sans avoir recours à innerHTML ?

    Finalement, je doute que l'on puisse dire que l'une ou l'autre est la meilleure à tout coup. Voyez par exemple certains avis collectés en 2009.


    @SpaceFrog : Oui, justifiée, malheureusement, et j'ai bien hâte au jour où Internet Explorer sera en sérieux déclin sur le marché du web. Pour l'instant Microsoft a encore plus de 60% du marché mondial. Risque de l'ignorer qui le souhaite... C'est une considération qui a toute son importance en entreprise : les clients souhaitent tous que leurs applications fonctionnent avec les navigateurs les plus représentés, et c'est normal !

    Pour ma part, j'haïs Internet Explorer, vraiment !! Alors en dehors du bureau la considération que j'ai à son égard est très proche de ce que tu dis !


    [...]vous codez bein comme vous voulez en laissant la part belle à IE et en l'encourageant à continuer en marge des normes avec du propriétaire ...

Discussions similaires

  1. [POO] Document.open dans IE7 ne marche plus ?
    Par jgfa9 dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 30/10/2008, 22h58
  2. L'image d'arrière-plan ne s'affiche pas dans IE7
    Par zonob dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 15/06/2007, 09h05
  3. Fichier Adm pour configurer les exceptions du proxy dans IE7
    Par jdelges dans le forum Windows Serveur
    Réponses: 7
    Dernier message: 15/05/2007, 10h00
  4. InnerHTML dans une iframe
    Par Roromix dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/04/2007, 18h14
  5. Popup bizarre dans IE7
    Par viny dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 12/12/2006, 12h03

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