Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire Cours JavaScript, 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 01/07/2009, 10h29   #1 (permalink)
Membre régulier
 
Date d'inscription: janvier 2006
Messages: 110
Par défaut css print popup

bonjour,

voilà ce que je dois faire pour ma page web:

En affichage web:
- au clic, affiche la page courante avec la css print dans une popup

En affichage print:
- Centré
- au clic, lancer l'impression et fermer la popup

voilà mon code html de la page default.hmt:
Code :
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
	<head>
		<title></title>
		<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
		<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
		<link rel="stylesheet" media="screen" href="company1.css" type="text/css">
		<link rel="stylesheet" media="print" href="company1_print.css" type="text/css">
	</head>
	<body>
		<div id="TopLayer">
			<a href="Javascript:void%20window.open('default.htm',%20'win2',%20'status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=no,resizable=yes,width=640,height=480,directories=no,location=no')" rel="nofollow">Print this page</a>
		</div>
		<div id="TopLayer2">
		<a href="Javascript:self.print()" rel="nofollow">Print this page</a>
		</div>
		<div id="TitleLayer">
			Title Layer
		</div>
		<div id="TextLayer">
			Text Layer
		</div>
		<div id="LeftLayer">
			Left Layer
		</div>		
	</body>
</html>
 
 
et les css suivants:

company1_print
Code :
 
/*
Relative fonts defined in Body
*/
 
BODY, DIV, TD, P, .text, .largetext
{
    FONT-WEIGHT: normal;
    FONT-SIZE: 12pt;
    COLOR: #000000;
    LINE-HEIGHT: normal;
    FONT-FAMILY: Arial, Verdana, Helvetica, sans-serif;
    MARGIN-TOP: 0px;    
    MARGIN-LEFT: 0px;
    MARGIN-RIGHT: 0px;
}
 
#TopLayer 
{
	display:none; 
}
 
#TopLayer2 
{
	position:absolute; 
	width:100%; 
	height:55px; 
	z-index:1; 
	left: 0px; 
	top: 0px; 
	background-color: #808080; 
	layer-background-color: #99c99; 
	border: 1px none #000000;
}
 
 
#TitleLayer 
{
	position:absolute; 
	width:600px; 
	height:45px; 
	z-index:2; 
	left: 20px; 
	top: 60px; 
	background-color: #000000; 
	layer-background-color: #000000; 
	border: 1px none #000000;
}
 
 
#TextLayer
{
	position:absolute; 
	width:550; 
	height:150px; 
	z-index:3; 
	left: 20px; 
	top: 130px;
}
 
 
#LeftLayer{
	display:none;
}
 
 
A:link
{
    COLOR: midnightblue;
    TEXT-DECORATION: underline;
}
 
A:hover
{
    COLOR: deepskyblue;
}
 
A:visited
{
    COLOR: midnightblue;
    TEXT-DECORATION: underline;
}
 
.home
{
    COLOR: #000000;
}
 
.footer
{
    FONT-SIZE: 10pt;
    COLOR: white;
}
.webindexer
{
    FONT-WEIGHT: bold;
    COLOR: #000000;
    FONT-STYLE: italic;
}
 
.blocktitle
{
    FONT-WEIGHT: bold;
}
 
.htmlcodes
{
    COLOR: maroon;
    FONT-SIZE: 10pt;
}
 
H1
{
    FONT-WEIGHT: bold;
}
 
H2
{
    FONT-WEIGHT: bold;
    FONT-SIZE: 11pt;
}
 
.metalink
{
    FONT-SIZE: 10pt;
}
 
.maintitle
{
    FONT-WEIGHT: bold;
    FONT-SIZE: 14pt;
    COLOR: #000000;
}
 
.white
{
    COLOR: white;
	FONT-SIZE: 10pt;
}
 
.small
{
    FONT-SIZE: 10pt;
}
 
.smItem
{
    FONT-SIZE: 13pt;
}
 
.smSubItem
{
}
 
 
company1
Code :
 
/*
Relative fonts defined in Body
*/
 
BODY, DIV, TD, P, .text, .largetext
{
    FONT-WEIGHT: normal;
    FONT-SIZE: 100%;
    COLOR: #000000;
    LINE-HEIGHT: normal;
    FONT-FAMILY: Arial, Verdana, Helvetica, sans-serif;
    MARGIN-TOP: 0px;    
    MARGIN-LEFT: 0px;
    MARGIN-RIGHT: 0px;
}
 
#TopLayer 
{
	position:absolute; 
	width:100%; 
	height:55px; 
	z-index:1; 
	left: 0px; 
	top: 0px; 
	background-color: #808080; 
	layer-background-color: #99c99; 
	border: 1px none #000000;
}
 
#TopLayer2 
{
	display:none; 
}
 
 
#TitleLayer 
{
	position:absolute; 
	width:100%; 
	height:45px; 
	z-index:2; 
	left: 0px; 
	top: 60px; 
	background-color: #99cc99; 
	layer-background-color: #99c99; 
	border: 1px none #000000;
}
 
 
#TextLayer
{
	position:absolute; 
	width:70%; 
	height:150px; 
	z-index:3; 
	left: 200px; 
	top: 130px;
}
 
 
#LeftLayer{
	position:absolute; 
	width:150px; 
	height:115px; 
	z-index:4; 
	left: 0px; 
	top: 130px;
}
 
 
A:link
{
    COLOR: midnightblue;
    TEXT-DECORATION: underline;
}
 
A:hover
{
    COLOR: deepskyblue;
}
 
A:visited
{
    COLOR: midnightblue;
    TEXT-DECORATION: underline;
}
 
.home
{
    COLOR: red;
}
 
.footer
{
    FONT-SIZE: 85%;
    COLOR: white;
}
.webindexer
{
    FONT-WEIGHT: bold;
    COLOR: midnightblue;
    FONT-STYLE: italic;
}
 
.blocktitle
{
    FONT-WEIGHT: bold;
}
 
.htmlcodes
{
	font-size: 90%;
	color: maroon;
}
 
H1
{
    FONT-WEIGHT: bold;
    FONT-SIZE: 100%;
}
 
H2
{
    FONT-WEIGHT: bold;
    FONT-SIZE: 90%;
}
 
.metalink
{
    FONT-SIZE: 80%;
}
 
.maintitle
{
    FONT-WEIGHT: bold;
    FONT-SIZE: 120%;
    COLOR: #003399;
}
 
.white
{
    COLOR: white;
	FONT-SIZE: 90%;
}
 
.small
{
    FONT-SIZE: 80%;
}
 
.smItem
{
    FONT-SIZE: 110%;
}
 
.smSubItem
{
}
LI
{
	font-size: 90%;
}
 
 
quand j'ouvre le pop up je n'arrive pas à faire en sorte d'avoir la forme que je veux dans mon css de company1_print.css

Merci d'avance pour votre aide
zekabyle est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 01/07/2009, 10h43   #2 (permalink)
Expert Confirmé Sénior
 
Avatar de franculo_caoulene
 
Date d'inscription: octobre 2003
Messages: 2 903
Par défaut

Salut,

Ça n'a en fait pas de lien avec javascript.
Code :
<link rel="stylesheet" media="screen" href="company1.css" type="text/css">
<link rel="stylesheet" media="print" href="company1_print.css" type="text/css">
 
Ceci dit clairement : "si je m'affiche sur un écran j'utilise company1.css, si on me demande de m'imprimer j'utilise company1_print.css". Or quoiqu'il arrive tu affiche le document à l'écran, le document utilise donc toujours le même CSS.

Si tu veux simuler l'aperçu avant impression, il faut que tu ne mettes plus qu'une feuille de style à l'ouverture du document :
Code :
<link rel="stylesheet" media="screen" href="company1_print.css" type="text/css">
<link rel="stylesheet" media="print" href="company1_print.css" type="text/css">
Enfin, si j'ai bien compris.
__________________
Penser à la recherche et au bouton
franculo_caoulene est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 01/07/2009, 11h08   #3 (permalink)
Membre régulier
 
Date d'inscription: janvier 2006
Messages: 110
Par défaut

Merci pour ta réponse, ce n'est pas vraiment ce que je voulais ^^

à vrai dire, j'ai ma page default.htm qui affiche selon le company1 et je voudrais lorsque que je clique sur imprimer avoir une pop up qui s'ouvre en tenant compte juste du company1_print qui contiendra un lien dessus pour imprimer le tout.
Je voulais savoir s'il était possible d'ouvrir le popup en utilisant la même page avec le window.open pour que le pop up affiche les éléments selon le company1_print et qu'ensuite dans le pop up il y ait un lien imprimer qui fasse le self.print().

Je dois utiliser une autre page html pour le popup si j'ai bien compris?

Dernière modification par zekabyle ; 01/07/2009 à 11h25.
zekabyle est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 01/07/2009, 11h24   #4 (permalink)
Expert Confirmé Sénior
 
Avatar de franculo_caoulene
 
Date d'inscription: octobre 2003
Messages: 2 903
Par défaut

Javascript reste anecdotique On peut le faire tout en javascript mais bon, à toi de voir selon l'utilité.

Soit tu utilises une autre page en effet, soit tu ouvres la fenêtre avec window.open, avec une URL de cette même page contenant un paramètre en querystring. Si ce paramètre existe ou s'il a une valeur que tu as choisi tu changes l'appel des feuilles de styles. Ceci implique donc un langage serveur. Ou si tu veux le faire tout en javascript, tu peux voir lire la FAQ.
__________________
Penser à la recherche et au bouton
franculo_caoulene est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 09h41   #5 (permalink)
Membre régulier
 
Date d'inscription: janvier 2006
Messages: 110
Par défaut

je coince un peu pour faire le javascript car je ne vois pas comment faire pour par exemple modifier le head pour enlever le lien du <link rel="stylesheet" media="screen" href="company1.css" type="text/css">
pour y mettre <link rel="stylesheet" media="print" href="company1_print.css" type="text/css"> à la place.

Est-ce possible?
zekabyle est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 10h04   #6 (permalink)
Membre régulier
 
Date d'inscription: mars 2009
Localisation: Amiens
Âge: 21
Messages: 114
Par défaut

Tu peux attendre n'importe quel élément (même ceux contenus dans le head) via DOM.
_jey_ est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 10h11   #7 (permalink)
Membre régulier
 
Date d'inscription: janvier 2006
Messages: 110
Par défaut

on peut aussi modifier le head avec du javascript avec DOM?
zekabyle est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 10h15   #8 (permalink)
Expert Confirmé Sénior
 
Avatar de franculo_caoulene
 
Date d'inscription: octobre 2003
Messages: 2 903
Par défaut supprimer un élément (style) dans le head

J'ai supprimé un message qui disait une bêtise. Voici la façon de faire :
Code :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>supprimer un élément (style) dans le head</title>
  <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
  <style type="text/css">
  body {background:#000;}
  p {padding:2px;background:#333;color:#ddd;font-size:1.2em;font-family:Helvetica, Arial, "sans serif";}
  </style>
</head>
<body>
  <p>Je teste.</p>
  <script type="text/javascript">
  <!--
    var heads = document.getElementsByTagName("head");
    var styles = document.getElementsByTagName("style");
    heads[0].removeChild(styles[0]);
  //-->
  </script>
</body>
</html>
__________________
Penser à la recherche et au bouton
franculo_caoulene est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/07/2009, 10h39   #9 (permalink)
Membre régulier
 
Date d'inscription: janvier 2006
Messages: 110
Par défaut

merci
zekabyle est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/07/2009, 10h09   #10 (permalink)
Membre régulier
 
Date d'inscription: janvier 2006
Messages: 110
Par défaut

j'ai essayé la solution et pour le moment j'ai les modifications qui se font sur la page qui appelle le pop up au lieu du pop up

Voilà ma page html:
Code :
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
	<head>
		<title></title>
		<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
		<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
		<link rel="stylesheet" media="screen" href="company1.css" type="text/css">
		<link rel="stylesheet" media="print" href="company1_print.css" type="text/css">
		<script type="text/javascript">
			function display()
			{	
				var win =window.open("default.htm","nom_popup","menubar=no, status=no, scrollbars=no, menubar=no, width=640, height=480");
				var heads = document.getElementsByTagName("head");
				    var link = document.getElementsByTagName("link");
				    heads[0].removeChild(link[0]);
 
			}
 
			function printer(){
			
				self.print();
				self.close();
			}
		</script>
	</head>
	
	<body>
		<div id="TopLayer">
			<a href="Javascript:display()" >Print this page</a>
		</div>
		<div id="TopLayer2">
			<a href="Javascript:printer()">imprimer la page</a>
		</div>
		<div id="TitleLayer">
			Title Layer
		</div>
		<div id="TextLayer">
			Text Layer
		</div>
		<div id="LeftLayer">
			Left Layer
		</div>		
	</body>
</html>
 
 
la page default.htm affiche la forme modifiée et le pop up affiche la forme de base alors que ça devrait être le contraire, je ne sais pas trop quoi faire
zekabyle est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/07/2009, 10h22   #11 (permalink)
Expert Confirmé Sénior
 
Avatar de franculo_caoulene
 
Date d'inscription: octobre 2003
Messages: 2 903
Par défaut

Cette façon de faire ne peut pas fonctionner pour deux raisons :
1) parce que tu agis sur document alors que pour agir sur la popup il faudrait agir sur win.document.
2) le point 1) ne fonctionnerait de toute façon pas car tu essaie d'agir sur le DOM avant qu'il ne soit charger, puisque tout de suite après la création de la popup.

Il faut donc ouvrir cette même page avec un querystring et le détecter :
Code :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
  <head>
    <title></title>
    <meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    <link rel="stylesheet" media="screen" href="company1.css" type="text/css">
    <link rel="stylesheet" media="print" href="company1_print.css" type="text/css">
    <script type="text/javascript">
    function display() {	
      var win = window.open("tmp.html?p=true","nom_popup","menubar=no, status=no, scrollbars=no, menubar=no, width=640, height=480");
    }
    function printer(){
      self.print();
      self.close();
    }
    
    var querystring = window.location.toString().split("?")[1];
    if (querystring!==undefined) {
      var couples = querystring.split("&");
      var parametres = [];
      var couple = [];
      for (var i=0,imax=couples.length; i<imax; i++) {
        couple = couples[i].split("=");
        parametres.push([couple[0], couple[1]]);
      }
      
      if (parametres[0][0]==="p" && parametres[0][1]==="true") {
        var heads = document.getElementsByTagName("head");
        var link = document.getElementsByTagName("link");
        heads[0].removeChild(link[0]);
      }
    }
    </script>
  </head>
  <body>
    <div id="TopLayer">
      <a href="Javascript:display()" >Print this page</a>
    </div>
    <div id="TopLayer2">
      <a href="Javascript:printer()">imprimer la page</a>
    </div>
    <div id="TitleLayer">
      Title Layer
    </div>
    <div id="TextLayer">
      Text Layer
    </div>
    <div id="LeftLayer">
      Left Layer
    </div>		
  </body>
</html>
__________________
Penser à la recherche et au bouton
franculo_caoulene est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/07/2009, 10h58   #12 (permalink)
Membre régulier
 
Date d'inscription: janvier 2006
Messages: 110
Par défaut

Merci beaucoup ça marche

juste un petit truc,

dans mon pop, j'ai les 2 liens suivants qui s'affichent:
Code :
 
<div id="TopLayer">
			<a href="Javascript:display('default.htm')" >Print this page</a>
		</div>
		<div id="TopLayer2">
			<a href="Javascript:printer()">imprimer la page</a>
		</div>
 
alors que seul le dernier lien devrait s'afficher pourtant dans mon css pour compagny1.css, j'ai:
Code :
 
#TopLayer 
{
	position:absolute; 
	width:100%; 
	height:55px; 
	z-index:1; 
	left: 0px; 
	top: 0px; 
	background-color: #808080; 
	layer-background-color: #99c99; 
	border: 1px none #000000;
}
 
#TopLayer2 
{
	display:none; 
}
 
et dans compagny1_print.css, j'ai
Code :
 
#TopLayer 
{
	display:none; 
}
 
#TopLayer2 
{
	position:absolute; 
	width:100%; 
	height:55px; 
	z-index:1; 
	left: 0px; 
	top: 0px; 
	background-color: #808080; 
	layer-background-color: #99c99; 
	border: 1px none #000000;
}
 
Pourtant, je cache le topLayer pour le popup mais il s'affiche quand même
zekabyle est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/07/2009, 11h20   #13 (permalink)
Expert Confirmé Sénior
 
Avatar de franculo_caoulene
 
Date d'inscription: octobre 2003
Messages: 2 903
Par défaut

Mea culpa et c'est aussi la tienne, il faut aussi réfléchir maintenant que tu sais que tu peux intervenir sur ces éléments .
En fait, plutôt que de supprimer une feuille de style du document, il suffit juste de remplacer son attribut href :
Code :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
  <head>
    <title></title>
    <meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    <link rel="stylesheet" media="screen" href="style1.css" type="text/css">
    <link rel="stylesheet" media="print" href="style2.css" type="text/css">
    <script type="text/javascript">
    function display() {	
      var win = window.open("tmp.html?p=true","nom_popup","menubar=no, status=no, scrollbars=no, menubar=no, width=640, height=480");
    }
    function printer(){
      self.print();
      self.close();
    }
    
    var querystring = window.location.toString().split("?")[1];
    if (querystring!==undefined) {
      var couples = querystring.split("&");
      var parametres = [];
      var couple = [];
      for (var i=0,imax=couples.length; i<imax; i++) {
        couple = couples[i].split("=");
        parametres.push([couple[0], couple[1]]);
      }
      
      if (parametres[0][0]==="p" && parametres[0][1]==="true") {
        var links = document.getElementsByTagName("link");
        links[0].href = links[1].href;
      }
    }
    </script>
  </head>
  <body>
    <div id="TopLayer">
      <a href="Javascript:display()" >Print this page</a>
    </div>
    <div id="TopLayer2">
      <a href="Javascript:printer()">imprimer la page</a>
    </div>
    <div id="TitleLayer">
      Title Layer
    </div>
    <div id="TextLayer">
      Text Layer
    </div>
    <div id="LeftLayer">
      Left Layer
    </div>		
  </body>
</html>
 
__________________
Penser à la recherche et au bouton
franculo_caoulene est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/07/2009, 11h25   #14 (permalink)
Membre régulier
 
Date d'inscription: janvier 2006
Messages: 110
Par défaut

ah ok, je vois maintenant

Merci beaucoup pour ton aide et le temps passé pour m'aider
zekabyle est déconnecté   Envoyer un message privé Réponse avec citation
NEWS JAVASCRIPTF.A.Q JSTUTORIELS JSSOURCES JSLIVRES JS

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 08h06.


Vos questions techniques : forum d'entraide JavaScript - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.