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 remplacer innerHTML.


Sujet :

JavaScript

  1. #1
    Dos
    Dos est déconnecté
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 137
    Par défaut Comment remplacer innerHTML.
    Bonjour,
    Bon vous l'aurez compris je ne suis pas au top niveau JavaScript...
    J'ai un code qui me sert à imprimer un <DIV>, là c'est simple, mais une fois écrit je me aperçu que le innerHTML est a bannir pour cause de compatibilité. (j'ai testé... ça marche mal sur ff et Chrome).
    Le problème c'est que je ne trouve pas de code simple (et compréhensible) pour le faire. Auriez vous la solution? (donc simple et compréhensible pour un novice)

    Voici mon code :

    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
        function imprime_zone(titre, obj) 
                {
                // Définie la zone à imprimer
                var zi = document.getElementById(obj).innerHTML;
     
                // Ouvre une nouvelle fenetre
                var f = window.open("", "ZoneImpr", "height=600, width=885,toolbar=0, menubar=0, scrollbars=1, resizable=1,status=0, location=0, left=10, top=10");
     
     
                // Ajoute les Données
                f.document.title = titre;
                f.document.body.innerHTML += "" + zi + "";
     
                // Imprime et ferme la fenetre
                f.window.print();
                f.window.close();
    }

  2. #2
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    Citation Envoyé par Dos Voir le message
    Bonjour,
    Bon vous l'aurez compris je ne suis pas au top niveau JavaScript...
    J'ai un code qui me sert à imprimer un <DIV>, là c'est simple, mais une fois écrit je me aperçu que le innerHTML est a bannir pour cause de compatibilité. (j'ai testé... ça marche mal sur ff et Chrome).
    Le problème c'est que je ne trouve pas de code simple (et compréhensible) pour le faire. Auriez vous la solution? (donc simple et compréhensible pour un novice)

    Voici mon code :

    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
        function imprime_zone(titre, obj) 
                {
                // Définie la zone à imprimer
                var zi = document.getElementById(obj).innerHTML;
     
                // Ouvre une nouvelle fenetre
                var f = window.open("", "ZoneImpr", "height=600, width=885,toolbar=0, menubar=0, scrollbars=1, resizable=1,status=0, location=0, left=10, top=10");
     
     
                // Ajoute les Données
                f.document.title = titre;
                f.document.body.innerHTML += "" + zi + "";
     
                // Imprime et ferme la fenetre
                f.window.print();
                f.window.close();
    }
    qu'entends-tu par "marche mal" ?

    as-tu essayé "document.write" (proscris dans certains cas, j'ignore si ça l'est pour le tien qui est assez particulier)

  3. #3
    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
    Il faut surtout attendre que la page soit chargée avant d'essayer d'y intégrer du contenu...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var zi = document.getElementById(obj).innerHTML;
    var f = window.open("", "ZoneImpr", "height=600, width=885,toolbar=0, menubar=0, scrollbars=1, resizable=1,status=0, location=0, left=10, top=10");
    f.onload = function(){
                // Ajoute les Données
                f.document.title = titre;
                f.document.body.innerHTML +=zi;
    }
    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

  4. #4
    Dos
    Dos est déconnecté
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 137
    Par défaut
    Merci, j'ai rajouter un pause, juste pour voir... pareil.
    -> Outre la mise en page qui saute, je perds tous les liens vers les gif...

  5. #5
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Pour ma part, je trouve qu'utiliser les méthodes DOM est très simple et compréhensible. De plus ça permet de mieux comprendre le fonctionnement du DOM. Par contre il faut reconnaître que ça prend plus de temps à écrire qu'un innerHTML et que la syntaxe est plus lourde.

    Les fonctions/attributs à utiliser sont les suivants :

    • createElement(...)
    • setAttribute(..., ...)
    • createTextNode(...)
    • appendChild(...)
    • replaceChild(..., ...)
    • insertBefore(..., ...)
    • firstChild
    • data
    • parentNode
    • childNodes


    Normalement tu n'as pas besoin de plus que ça.

  6. #6
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2008
    Messages : 73
    Par défaut
    L'ennui est que si tu essaies d'ouvrir une fenêtre sans page, eh bien... tu ne devrais pas avoir de page dans cette fenêtre... donc pas de document... donc pas de BODY à remplir... (il me semble qu'IE affiche par défaut un document vierge, mais pas Firefox... )

    Pourquoi ne pas créer un canevas de page vide à ouvrir dans ta popup ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ma_page_vierge.html :
     
    <html>
    <head>
    <title></title>
    </head>
    <body>
    </body>
    </html>
    Puis, dans ton script, une ligne (tu devineras laquelle) à remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var f = window.open("ma_page_vierge.html", "ZoneImpr", "height=600, width=885,toolbar=0, menubar=0, scrollbars=1, resizable=1,status=0, location=0, left=10, top=10");
    Hope this helps !

  7. #7
    Dos
    Dos est déconnecté
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 137
    Par défaut
    Merci a tous,
    Je m'en suis sorti en retravaillant ma page. Mais je note la méthode...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] AJAX et IE, comment remplacer innerHTML?
    Par forumcpp_nono dans le forum AJAX
    Réponses: 1
    Dernier message: 13/04/2010, 23h19
  2. Comment remplacer trop de "if" ?
    Par Clad3 dans le forum C++
    Réponses: 14
    Dernier message: 28/03/2005, 20h08
  3. Réponses: 5
    Dernier message: 25/01/2005, 14h26
  4. comment remplacer une partie de texte dans un champs
    Par patlapi dans le forum Paradox
    Réponses: 4
    Dernier message: 20/11/2003, 14h38

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