2012-02-13 8 views
8

Creo que la respuesta a esto es casi seguro que "no", porque he hecho un poco de prueba y buscar alrededor, pero ¿hay algún truco para detectar si window.print() aun poder trabajar desde el interior de una página (es decir, desde JavaScript)? Sé que incluso en una computadora de escritorio/portátil nunca será posible saber si hay una impresora configurada en el sistema, por ejemplo, pero al menos el navegador mostrará un cuadro de diálogo de impresión.Determinar si el navegador es compatible con la impresión

Mi teléfono Android tiene una función window.print() pero (como era de esperar) no hace nada.

Una vez más estoy pidiendo sobre todo por lo que es una buena pregunta sobre el tema en SO :-)

Respuesta

5

desgracia se ve como un no. La función window.print() no es parte de la especificación EMCAScript. Esto significa que no es necesario que forme parte del lenguaje JavaScript, y no hay documentación adecuada para su implementación. Es un comportamiento indefinido, por lo que las pruebas parecen muy difíciles.

Fuentes:

EDIT:

pequeño script linda que escribí para probar mis navegadores, simplemente comprueba que existe la función de impresión y luego pide imprimir:

if(window.print) { 
    if(confirm('I can print. Would you like to?')) 
     window.print() 
} 
+0

Sí, eso es lo que había decidido. Bueno, quizás ahora esto también sirva como un buen punto de referencia :-) – Pointy

+2

También escribí esto para probar mis navegadores: http://jsfiddle.net/zdY4d/4/ – Jivings

+0

@Jivings agrega el violín a tu respuesta ... – powtac

5

El método print() es sincrónico. Esto hace posible hacer el seguimiento para decidir si se ha mostrado un cuadro de diálogo de impresión

var start = +new Date(); 
window.print(); 
var delta = + new Date() - start; 
console.log(delta); 
if (delta > 100) { console.log('It worked'); } 
+0

Aunque el usuario debe intentar imprimir para probar si puede imprimir :). De todos modos, puede usar este script y mostrar un mensaje si falla la impresión (no delta> 100). – Fernando

+0

Supongo que si un navegador define window.print (para evitar el descifrado de scripts que intentan llamarlo), pero en realidad no hace nada de lo que tardaría menos de 100ms en procesar la siguiente línea de código. Me gusta. ¡Solo desearía que hubiera una manera de probar sin llamarlo realmente! Sin embargo, esta es la mejor solución que he visto hasta ahora. – jinglesthula

+1

Por cierto, en caso de que alguien se esté preguntando sobre ese signo más, http://stackoverflow.com/questions/221539/what-does-the-plus-sign-do-in-return-new-date – jinglesthula

Cuestiones relacionadas