72 votes

Javascript Imprimer uniquement le contenu de l'iframe

C'est mon code

 <script>
var body = "dddddd"    
var script = "<script>window.print();</scr'+'ipt>";

var newWin = $("#printf")[0].contentWindow.document; 
newWin.open();
newWin.close();

$("body",newWin).append(body+script);

</script>
<iframe id="printf"></iframe>

Cela fonctionne mais il imprime la page parent, comment faire pour qu'il n'imprime que l'iframe ?

132voto

mplungjan Points 36458

je ne m'attendrais pas à ce que ça marche

essaie à la place

 window.frames["printf"].focus();
window.frames["printf"].print();

et utilise

 <iframe id="printf" name="printf"></iframe>

Sinon, essayez le bon vieux

 var newWin = window.frames["printf"];
newWin.document.write('<body onload="window.print()">dddd</body>');
newWin.document.close();

si jQuery ne peut pas le pirater

Démo en direct

32voto

Salman A Points 60620
document.getElementById("printf").contentWindow.print();

La même politique d'origine s'applique.

13voto

Kiarash Points 478

Un moyen simple (testé sur ie7+, firefox, Chrome, safari) serait le suivant

 //id is the  id of the iframe
function printFrame(id) {
            var frm = document.getElementById(id).contentWindow;
            frm.focus();// focus on contentWindow is needed on some ie versions
            frm.print();
            return false;
}

11voto

Evert Points 1962

une option alternative, qui peut ou non convenir, mais plus propre si elle est :

Si vous souhaitez toujours imprimer uniquement l'iframe à partir de la page, vous pouvez avoir une feuille de style "@media print{}" distincte qui masque tout en dehors de l'iframe. Ensuite, vous pouvez simplement imprimer la page normalement.

10voto

Perx Points 113

Vous pouvez utiliser cette commande :

 document.getElementById('iframeid').contentWindow.print();

Cette commande est fondamentalement la même que window.print(), mais comme la fenêtre que nous aimerions imprimer est dans l'iframe, nous devons d'abord obtenir une instance de cette fenêtre en tant qu'objet javascript.

Ainsi, en référence à cet iframe, nous obtenons d'abord l'iframe en utilisant son identifiant, puis son contentWindow renvoie un objet window(DOM). Ainsi, nous sommes en mesure d'utiliser directement la fonction window.print() sur cet objet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X