Chrome: no imprime contenido javascript

(Esto es a través de Grease/Tampermonkey).

Aquí hay una función de impresión para un quiosco que usa el navegador Chrome beta:

$("#autoCheckOrder button").click ( function () {
    var newWin      = window.open (""); 
    newWin.document.write ( "<!DOCTYPE html>" );
    newWin.document.write( "<html>" );
    newWin.document.write( "<head>" );
    newWin.document.write( "<title>" );
    newWin.document.write( "</title>" );
    newWin.document.write( "<style>" );
    newWin.document.write( "@media print { " );
    newWin.document.write( "body { " );
    newWin.document.write( "background-color: white;" );
    newWin.document.write( "width: 55mm;" );
    newWin.document.write( "position: absolute;" );
    newWin.document.write( "top: 0;" );
    newWin.document.write( "left: 0;" );
    newWin.document.write( "padding: 0px;" );
    newWin.document.write( "font-size: 14px;" );
    newWin.document.write( "line-height: 18px;" );
    newWin.document.write( "}" );
    newWin.document.write( "}" );
    newWin.document.write( "</style>" );
    newWin.document.write( "</head>" );
    newWin.document.write( "<body>" );
    newWin.document.write ( loanHTML ); 
    newWin.document.write( "</body>" );
    newWin.document.write( "</html>" );
    if(newWin.print()) {
        newWin.close();
    } else {
        newWin.close();
    }
});

Toma una tabla de una página que enumera todos los artículos y luego crea un 'recibo'. Luego se imprime el recibo. Esto funcionó perfectamente por un tiempo, ahora solo imprime el primer elemento.

He intentado lo siguiente sin absolutamente ningún resultado:

  • Uso de salto de página después: siempre
  • Colocar recibo en div con la regla CSS anterior
  • Reinstalar la impresora
  • Configuración de reducción de papel para la impresora

Lo loco es que solía imprimir todos los artículos sin problemas y ahora no. Incluso reinstalé el script desde una copia de seguridad solo para estar seguro.

No tengo idea de a dónde ir desde aquí. Todo el contenido se muestra en la vista previa de impresión, pero solo se imprime el primer elemento. La configuración de 'Encabezado y pie de página' solo empeora las cosas, no las mejora.

ACTUALIZACIÓN

Cambié el HTML enviado a la impresora y funciona. Todavía no estoy seguro de si es completamente válido, pero se está imprimiendo. Sabré qué arreglar si deja de imprimir. ¡Gracias por el aporte!

preguntado el 22 de mayo de 12 a las 21:05

¿Por qué estás tratando de hacer esto en JavaScript? Esto está mal. -

Sin elección. Aplicación interna de terceros. -

1 Respuestas

La única explicación plausible que puedo ver es que su variable de préstamoHTML está vacía o indefinida.

Demostración: http://jsfiddle.net/waitinforatrain/bMzUt/2/

Comenta el var loanHTML línea y ejecutar de nuevo, y verá lo que quiero decir.

contestado el 23 de mayo de 12 a las 02:05

Funciona en Greasemonkey/Firefox. Es una tabla y, por alguna razón, solo se imprime la primera fila en Chrome, aunque todo se muestra en la vista previa de impresión. Me pregunto si debería escribir todo en un div oculto en la página antes de escribir en la página del recibo. - Bubnoff

En realidad, el loanHTML probablemente esté mal formado. FF y Chrome manejan el código mal formado de manera diferente, y Chrome también "forma" las cosas de manera diferente. Guarde una página de impresión que no funcione correctamente en el disco. Luego abra ese archivo con Chrome y verifique que (todavía) tenga el problema. Repita hasta que tenga un archivo de demostración de problemas. Luego sube ese archivo a pastebin.com y señalarnoslo. ... También, exactamente como es loanHTML definido/establecido? - brock adams

Creo que definitivamente estás en algo. El div se extrae desde dentro de una tabla, eliminando así las etiquetas de la tabla exterior. No me molesté en hacer nada al respecto, ya que parecía funcionar bien... al principio... y luego me olvidé de ese pequeño detalle. Todavía me pregunto por qué funcionó para empezar. - Bubnoff

Brock Adams ~ Sí, html no válido. Funciona ahora. ¡Gracias! - Bubnoff

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.