11550 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

j'ai une question à laquelle je n'ai pas trouvé de réponse sur Google ni ici : comment imprimer uniquement le contenu d'un div, puisque la fonction window.print(); imprime toute la page...

Exemple :


...
<div class="description">
	<p>blablabla</p>
	<p>blablabla</p>
	<div onclick="javascript:window.print();"><span class="bouton">IMPRIMER LA FICHE</span></div>
</div>
...


Existe-t-il une fonction JavaScript qui permettrait d'imprimer uniquement le div depuis lequel elle serait appelée ?

Sinon je peux nommer aussi spécifiquement mon div si c'est plus facile à identifier :


...
<div id="description1">
	<p>blablabla</p>
	<p>blablabla</p>
	<div onclick="javascript:window.print();"><span class="bouton">IMPRIMER LA FICHE</span></div>
</div>
...


Et donc existe-t-il une fonction qui permet d'imprimer uniquement ce div ?

Merci d'avance !
Lionel
Bonjour,
Non, il n'existe pas de fonction pour imprimer uniquement un div.
La seule solution est assez lourde et consiste en l'ouverture d'une popup temporaire dans laquelle on place uniquement la div qu'on veut imprimer.
Non, je pense qu'il peut exister une autre solution. Si tu as trois div, #toto, #tata, #tutu sur ta page, tu ajoutes à ton fichier trois css, qui affichent spécifiquement tel ou tel div, et cachent les autres. Tu leur donnes un attribut media="print".

Lorsque tu lances l'impression, si tu passes par JavaScript tu demandes à l'utilisateur quel zone il veut imprimer, puis en fonction de la réponse, tu désactives les feuilles de style permettant l'affichage des autres div, et tu actives la feuille qui n'affiche que le div que tu veux imprimer (via la collection document.styleSheets, et la propriété disabled de chaque objet de feuille de style). Alors seulement tu lances ton window.print(). Si quelque chose doit marcher, ce soit être ce genre d'astuce Smiley ohwell
OK c'est bien ce qu'il me semblait...

Je vais me débrouiller (je ne sais pas trop comment !) Smiley sweatdrop

Merci pour vos réponses !