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 :

Rafraichissement de frame pour impression


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Mars 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2006
    Messages : 41
    Par défaut Rafraichissement de frame pour impression
    Bonjour,


    je dois modifier acutellement une application gérant des informations des clients et au sein de laquelle une impression est faite. Comme l'impression ne correspond pas à l'affichage de la page web, une frame non visible à l'écran est utilisée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <INPUT class="css-button" type="button" name="boutonPrint" id="boutonPrint" value="IMPRIMER" onClick="print();" >
    <IFRAME SRC="monImpression.php" name="iframe1" id="iframe1" width="100%" height="0"  style="visibility:visible;"></IFRAME>
    <IFRAME SRC="about:blank" name="iframe2" id="iframe2" width="20" height="20" style="visibility:hidden;"></IFRAME>
    La fonction print() est donc appelée lors du clic sur le bouton. Cette fonction fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function print() {
      try {  
        document.frames["iframe2"].location.href="mesCalculs.php";
     
        document.frames["iframe1"].location.href="monImpression.php";
        document.frames["iframe1"].location.reload(true);
        document.frames["iframe1"].window.focus();
        document.frames["iframe1"].print();
     
      } catch(Er) {
        alert(Er.toString());	
      }
    }
    La fonction appel donc, avant l'impression, la page mesCalculs.php qui (comme son nom l'indique) calcule certaines informations, dont l'identifiant de l'impression. Cet identifiant doit apparaître sur la page imprimée or il reste à 0 sur ma feuille.
    J'ai l'impression que la frame contenant les informations à imprimer est généré dès l'affichage de ma page principale et que je n'arrive pas à l'actualiser pour faire en sorte que l'identifiant soit connu ensuite...

    Quelqu'un saurait-il m'éclairer ?
    Merci d'avance.

  2. #2
    Membre averti
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Mars 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2006
    Messages : 41
    Par défaut
    J'ai essayé en mettant ce code à la fin de la page mesCalculs.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <script>
      parent.frames["iframe2"].document.location.href="monImpression.php";
      parent.frames["iframe2"].document.location.reload();
      parent.frames["iframe2"].window.focus();
      parent.frames["iframe2"].print();  
    </script>
    Mais ça ne marche pas mieux. En revanche, si je redirige directement ma page affichée vers monImpression.php, le code est bien présent est s'affiche à l'écran.
    Sauf que le but est de ne pas voir cette page mais de l'imprimer...


    J'ai tenté également en déclarant la frame avec un about:blank, au départ, pour, ensuite, la remplir avec monImpression.php. Mais à l'impressionn j'ai un page blanche...

    Tout porte à croire que la redirection de la frame n'est pas effective...
    J'avais aussi tenté en utilisant location.replace() à la place de location.href, sans obtenir plus de satisfaction...

  3. #3
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Plutôt que de monter une usine à gaz à base d'iframe (déconseillées pour pas mal de raisons d'ailleurs), as-tu envisagé la solution "propre" consistant à établir une feuille de style spécifique à l'impression, différente de celle appliquée à l'affichage ? ^^

    J'ai bien conscience que l'idée ne résoud pas ton problème ponctuel (ou tout du moins pas comme ça vite fait), mais je voulais te le suggérer au cas où tu n'y aies pas pensé.

  4. #4
    Membre averti
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Mars 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2006
    Messages : 41
    Par défaut
    Je suis (presque) parvenu à mes fins...

    A la place de ce bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        document.frames["iframe1"].location.href="monImpression.php";
        document.frames["iframe1"].location.reload(true);
        document.frames["iframe1"].window.focus();
        document.frames["iframe1"].print();
    J'ai mis celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        document.location.href="maPage.php?impression"
    Et je ne charge ma page d'impression dans mon iframe que si cette variable est définie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <INPUT class="css-button" type="button" name="boutonPrint" id="boutonPrint" value="IMPRIMER" onClick="print();" >
    <IFRAME SRC="<?php if(isset($_GET["impression"])) echo 'monImpression.php' ?>" name="iframe1" id="iframe1" width="100%" height="0"  style="visibility:visible;"></IFRAME>
    <IFRAME SRC="about:blank" name="iframe2" id="iframe2" width="20" height="20" style="visibility:hidden;"></IFRAME>
    Du coup, ma page à imprimer n'est généré que quand mon code est connu donc il est paré pour l'impression...

    Et pour imprimer, j'utilise le onLoad de ma page à imprimer en y mettant ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onload="parent.frames['iframe1'].window.focus();parent.frames['iframe1'].print();"
    En revanche j'ai perdu l'effet du submit de mon bouton d'impression...

Discussions similaires

  1. page pour impression
    Par maximenet dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 03/01/2006, 10h23
  2. Retourner de 90° contenu [Edit] ou [Label] pour impression
    Par Droïde Système7 dans le forum Composants VCL
    Réponses: 13
    Dernier message: 05/11/2005, 23h10
  3. Calcul pour impression multipage
    Par Fiquet dans le forum MFC
    Réponses: 2
    Dernier message: 30/09/2005, 09h38
  4. feuille pour impression
    Par Shaÿna dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 06/06/2005, 16h21
  5. [Débutant] Dialogue Java entre les frames pour client HTML
    Par Carrel dans le forum Général Java
    Réponses: 4
    Dernier message: 03/06/2004, 10h39

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