2010-04-03 4 views
0

Le contenu de la div suivante est dérivé dynamiquement: une table est ajoutée dynamiquement à cette div avec un bouton.Contenu de l'impression d'un div

Ma question est de savoir comment imprimer le contenu de cette div (window.print) et non d'autres choses dans la page

<div id="newdiv" name="newdiv"></div> 

Merci.

+0

@Hulk comme je l'ai dit dans l'autre question, s'il vous plaît laisser des commentaires sur les réponses insatisfaisantes ici au lieu d'en ouvrir une nouvelle. –

+0

Pekka pas d'infraction, je le marque comme une réponse. – Hulk

+0

aucune infraction prise, si la réponse ne vous a pas aidé, vous êtes libre de ne pas vérifier. Si une solution n'a pas fonctionné, donnez simplement votre avis à cet effet et vous aurez généralement de nouvelles options. –

Répondre

7

Deux idées:

  • introduisons une impression stylesheet

    <link rel="stylesheet" href="print.css" type="text/css" media="print" /> 
    

    qui donnera tous les éléments display: none sauf pour newdiv:

    * { display: none } /* This should hide all elements */ 
    div#newdiv { display: block } /* This should make newdiv visible again */ 
    

    Je ne peux pas tester ce moment mais je ne vois pas pourquoi cela ne marcherait pas.

  • Copiez le contenu du div dans un élément iframe nouvellement créé en utilisant JavaScript et imprimez-le.

    Beaucoup d'obstacles sur la route de cette façon, cependant. J'essaierais d'utiliser CSS en premier.

+0

ne pouvons pas faire quelque chose comme ça dans jquery $ ('# newdiv'). Val() et d'utiliser window.print – Hulk

+0

Vous pouvez parcourir tous les éléments de jQuery, les rendre tous invisibles sauf newdiv, puis invoquer ' window.print() 'Je suppose. Aurait le même effet que la feuille de style, à la différence que la feuille de style fonctionne également avec JS désactivé. Je ne vois pas vraiment d'avantage là-bas. Pour autant que je sache, vous ne pouvez pas envoyer de morceaux de HTML à window.print(). –

+0

+1. Les feuilles de style peuvent être désactivées et activées chaque fois que vous en avez besoin. –

4

Pekka pensée intelligente, mais il ne fonctionne pas tout à fait comme ça, après avoir utilisé un affichage global: ne vous aurait à réafficher chaque élément qui doit être affiché, y compris tous les éléments parents. Le meilleur moyen serait de cacher tous les éléments qui ne devraient pas être imprimés, la bonne nouvelle est que vous avez seulement besoin de cacher l'élément parent et tout ce qu'il contient sera caché.

Il est d'ailleurs pas besoin d'une feuille de style supplémentaire, un bloc dans une feuille existante peut être utilisée (il doit être placé à la fin de la dernière feuille):

@media print{ 
    .noprint{ 
     display:none; 
    } 
} 

maintenant un bloc peut être caché à l'impression simplement en donnant à son conteneur la classe noprint.

+0

@eBusiness vous faites un excellent point si le document est très complexe. +1 –