Javascript Imprimir sólo el contenido del iframe

Resuelto user1083382 asked hace 12 años • 12 respuestas

este es mi codigo

<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>

Esto funciona pero imprime la página principal, ¿cómo hago para que imprima solo el iframe?

user1083382 avatar Mar 08 '12 17:03 user1083382
Aceptado

No esperaría que eso funcionara.

prueba en su lugar

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

y use

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

Alternativamente prueba el viejo

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

si jQuery no puede hackearlo

Demo en vivo

mplungjan avatar Mar 08 '2012 11:03 mplungjan
document.getElementById("printf").contentWindow.print();

Se aplica la misma política de origen .

Salman A avatar Mar 08 '2012 12:03 Salman A

La forma más sencilla (probada en ie7+, Firefox, Chrome, Safari) sería esta

//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;
}
Kiarash avatar Jan 15 '2013 01:01 Kiarash

una opción alternativa, que puede ser adecuada o no, pero más limpia si lo es:

Si siempre desea imprimir el iframe de la página, puede tener una hoja de estilo "@media print{}" separada que oculte todo excepto el iframe. Entonces podrás imprimir la página normalmente.

Evert avatar Mar 08 '2012 12:03 Evert