Javascript Imprimir sólo el contenido del iframe
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?
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
document.getElementById("printf").contentWindow.print();
Se aplica la misma política de origen .
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;
}
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.