window.print() no funciona en IE

2 minutos de lectura

window.print() no funciona en IE
Pankaj

Estoy haciendo algo como esto en javascript para imprimir una sección de mi página al hacer clic en un enlace

function printDiv() {
 var divToPrint = document.getElementById('printArea');
 var newWin = window.open();
 newWin.document.write(divToPrint.innerHTML);
 newWin.print();
 newWin.close();
}

Funciona muy bien en Firefox pero no en IE.

¿Podría alguien ayudarme?

window.print() no funciona en IE
Pratik

Añade estas líneas después newWin.document.write(divToPrint.innerHTML)

newWin.document.close();
newWin.focus();
newWin.print();
newWin.close();

Entonces la función de impresión funcionará en todos los navegadores…

  • Muchas gracias. la falta de document.close() fue la causa;

    – Ahmad

    26 mar. 13 a las 14:35

  • Funciona bastante bien, Chrome identifica este enfoque como una ventana emergente y lo bloquea de forma predeterminada.

    – Beta033

    02 may. 13 en 15:50

  • esto funciona para mí, gracias. recuerda usar también la primera línea, window.document.close(); de lo contrario no funciona, para mí quiero decir…

    – Matteo Bononi ‘peortir’

    03 sep.

  • En Chrome 61, el navegador cierra instantáneamente la ventana de impresión. Después de quitar la línea newWin.close() funciona bien en Chrome… ahora el usuario debe cerrar la ventana manualmente

    – Sysix

    14 sep.

  • @Pratik Hola, gracias por tu solución. Tengo el mismo problema, pero no abro una nueva ventana para imprimir. ¿Cómo uso cerrar ()? ¿Me podría ayudar? Abrí una pregunta para este stackoverflow.com/questions/49410902 Gracias

    – códigoispoesía

    21 mar. 18 a las 16:20

window.print() no funciona en IE
ted

Agregar newWin.document.close();al igual que:

function printDiv() {
   var divToPrint = document.getElementById('printArea');
   var newWin = window.open();
   newWin.document.write(divToPrint.innerHTML);
   newWin.document.close();
   newWin.print();
   newWin.close();
}

Esto hace feliz a IE. HTH, -Ted

function printDiv() {
    var divToPrint = document.getElementById('printArea');
    newWin= window.open();
    newWin.document.write(divToPrint.innerHTML);
    newWin.location.reload();
    newWin.focus();
    newWin.print();
    newWin.close();
}

He tenido este problema antes, y la solución es simplemente llamar a window.print() en IE, en lugar de llamar a print desde la instancia de la ventana:

function printPage(htmlPage)
    {
        var w = window.open("about:blank");
        w.document.write(htmlPage);
        if (navigator.appName == 'Microsoft Internet Explorer') window.print();
        else w.print();
    }

¡Solo espera un poco antes de cerrar la ventana!

if (navigator.appName != 'Microsoft Internet Explorer') {
    newWin.close();
} else {
    window.setTimeout(function() {newWin.close()}, 3000);
}

window.print() no funciona en IE
Derin

agregar condición de verificación para onload

if (newWinObj.onload) {
    newWinObj.onload = function() {
        newWinObj.print();
        newWinObj.close();
    };
}
else {
    newWinObj.print();
    newWinObj.close();
}

window.print() no funciona en IE
clinton chau

Sólo para añadir alguna información adicional. En IE 11, usando simplemente

window.open() 

causas

window.document

ser indefinido. Para resolver esto, utilice

window.open( null, '_blank' )

Esto también funcionará correctamente en Chrome, Firefox y Safari.

No tengo suficiente reputación para comentar, así que tuve que crear una respuesta.

.

¿Ha sido útil esta solución?