Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/02/2011, 11h57   #1
Futur Membre du Club
 
Homme
Responsable de projet fonctionnel
Inscription : mars 2006
Messages : 41
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Nord (Nord Pas de Calais)

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

Informations forums :
Inscription : mars 2006
Messages : 41
Points : 15
Points : 15
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 :
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 :
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.
Dave Lopeur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 09h04   #2
Futur Membre du Club
 
Homme
Responsable de projet fonctionnel
Inscription : mars 2006
Messages : 41
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Nord (Nord Pas de Calais)

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

Informations forums :
Inscription : mars 2006
Messages : 41
Points : 15
Points : 15
J'ai essayé en mettant ce code à la fin de la page mesCalculs.php :

Code :
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...
Dave Lopeur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 09h50   #3
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 073
Points : 4 073
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é.
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 11h33   #4
Futur Membre du Club
 
Homme
Responsable de projet fonctionnel
Inscription : mars 2006
Messages : 41
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Nord (Nord Pas de Calais)

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

Informations forums :
Inscription : mars 2006
Messages : 41
Points : 15
Points : 15
Je suis (presque) parvenu à mes fins...

A la place de ce bout de code :
Code :
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 :
    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 :
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 :
onload="parent.frames['iframe1'].window.focus();parent.frames['iframe1'].print();"
En revanche j'ai perdu l'effet du submit de mon bouton d'impression...
Dave Lopeur est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h18.


 
 
 
 
Partenaires

Hébergement Web