directly - ¿Cómo imprimo un iframe desde javascript en Safari/Chrome?
print iframe jquery (11)
Además de las soluciones de Andrew y Max, el uso de iframe.focus () dio como resultado la impresión del fotograma principal en lugar de imprimir solo el iframe hijo en IE8. Cambiar esa línea lo solucionó:
function printIframe(id)
{
var iframe = document.frames ? document.frames[id] : document.getElementById(id);
var ifWin = iframe.contentWindow || iframe;
ifWin.focus();
ifWin.printPage();
return false;
}
¿Puede alguien ayudarme con la impresión del contenido de un IFrame a través de una llamada javascript en Safari / Chrome?
Esto funciona en Firefox:
$(''#'' + id)[0].focus();
$(''#'' + id)[0].contentWindow.print();
esto funciona en IE:
window.frames[id].focus();
window.frames[id].print();
Pero no puedo hacer que funcione nada en Safari / Chrome.
Gracias
Andrés
El ''framePartsList.contentWindow.print ();'' no estaba funcionando en IE 11 ver11.0.43
Por lo tanto, he utilizado framePartsList.contentWindow.document.execCommand (''print'', false, null);
Ponga una función de impresión en el iframe y llámelo desde el padre.
iframe:
function printMe() {
window.print()
}
padre:
document.frame1.printMe()
También puedes usar
top.iframeName.print();
o
parent.iframeName.print();
Tuve que hacer algunas modificaciones para lograrlo en IE8 (no hice pruebas con otros sabores de IE)
1) document.frames [param] parece aceptar un número, no ID
printIframe(0, ''print'');
function printIframe(num, id)
{
var iframe = document.frames ? document.frames[num] : document.getElementById(id);
var ifWin = iframe.contentWindow || iframe;
ifWin.focus();
ifWin.printPage();
return false;
}
2) Tenía un cuadro de diálogo de impresión que se muestra al cargar la página y también había un enlace a "Haga clic aquí para comenzar a imprimir" (si no se inició automáticamente). Para que funcione, tuve que agregar la llamada a focus ()
<script type="text/javascript">
$(function(){
printPage();
});
function printPage()
{
focus();
print();
}
</script>
Una cosa a tener en cuenta es que si está probando esto localmente usando file: ///, no funcionará en chrome ya que la función en el iframe aparecerá como indefinida. Sin embargo, una vez en un servidor web, funcionará.
Use firefox window.frames
pero también agregue la propiedad de name
porque eso usa el iframe en firefox
ES DECIR:
window.frames[id]
Firefox:
window.frames[name]
<img src="print.gif" onClick="javascript: window.frames[''factura''].focus(); parent[''factura''].print();">
<iframe src="factura.html" width="100%" height="400" id="factura" name="factura"></iframe>
Utilicé el guión de Andrew pero agregué una pieza antes de llamar a la función printPage (). El iframe necesita foco, de lo contrario seguirá imprimiendo el cuadro principal en IE.
function printIframe(id)
{
var iframe = document.frames ? document.frames[id] : document.getElementById(id);
var ifWin = iframe.contentWindow || iframe;
iframe.focus();
ifWin.printPage();
return false;
}
Aunque no me agradezcas, fue Andrew quien escribió esto. Acabo de hacer un tweak = P
Utilizar esta:
window.onload = setTimeout("window.print()", 1000);
aquí está mi solución completa de navegador cruzado:
en la página iframe:
function printPage() { print(); }
en la página principal
function printIframe(id)
{
var iframe = document.frames ? document.frames[id] : document.getElementById(id);
var ifWin = iframe.contentWindow || iframe;
iframe.focus();
ifWin.printPage();
return false;
}
Actualización : Mucha gente parece tener problemas con esto en las versiones de IE lanzadas desde que tuve este problema. No tengo tiempo para reinvestigar en este momento, si estás atrapado, te sugiero que leas todos los comentarios en este hilo.
Puedes usar
parent.frames[''id''].print();
Trabaja en Chrome