2012-08-31 28 views
9

Un cliente ha solicitado que se agregue un botón de impresión a su sitio y desea que esté oculto para los usuarios que no tienen la capacidad de imprimir, p. la mayoría de los dispositivos móviles.¿Detecta si el usuario tiene capacidades de impresión?

¿Hay alguna manera a través de JavaScript para detectar si un cliente tiene capacidades de impresión?

+10

En una palabra, no. El navegador no llega a saber nada sobre los dispositivos conectados.Ciertamente puede decir si el cliente es móvil y ocultar el botón para dispositivos móviles, pero no puede decir nada sobre las impresoras de presencia. – meagar

+2

¿Es esto para un sitio público de Internet (en cuyo caso es imposible) o para un sitio de intranet privado? Si se trata de un sitio de intranet, ¿puede requerir un navegador específico y puede instalar complementos, p. ActiveX? –

+1

... y saber que un dispositivo es "móvil" es bastante difícil también, ya que el número de especies de dispositivos en la naturaleza está creciendo tan rápido últimamente. – Pointy

Respuesta

0

Si la regex de WURFL es demasiado lenta para su aplicación o está utilizando barniz, calamar o cualquier otra cosa que no le permita utilizar WURFL, puede intentar analizar la cadena de agente de usuario con JS (navegador .userAgent) y descubra algo así como "iOS versión 4+", ya que al menos esos dispositivos tienen capacidades de impresión (siempre que estén al alcance de una red con una impresora de red). Esta es una solución simple (pero nunca cubrirá todos los dispositivos iOS ya que tienen demasiadas cadenas de agente de usuario diferentes).

se pueden encontrar multitud de ejemplos de cadenas de agente de usuario aquí: http://deviceatlas.com/

1

está viciado El requisito ya que la mayoría de los agentes de usuario pueden "imprimir" y el conocimiento de si es o no un UA puede imprimir no sea de los sitios web Busines.

Muchos navegadores móviles pueden imprimir y la mayoría de los navegadores web pueden imprimir incluso si no hay una impresora adjunta (imprimir a pdf, imprimir en la nube, etc.). Es un pequeño problema de seguridad para cualquier agente de usuario afirmar explícitamente algo sobre sus capacidades de impresión sin que el usuario lo sepa. Para eso está la hoja de estilo de impresión (para que el sitio web no tenga que saber si se está imprimiendo).

Lo que puede hacer es ocultar el botón en agentes de usuario con pantallas pequeñas, esos usuarios aún pueden imprimir sus documentos utilizando el agente de usuario. También puede detectar agentes de usuario específicos y ocultar el botón para ellos.

Enlaces

http://www.alistapart.com/articles/return-of-the-mobile-stylesheet: discute hojas de estilo móviles y temas relacionados.

http://mobile.smashingmagazine.com/2010/11/03/how-to-build-a-mobile-website/#mobile-stylesheets: más sobre las hojas de estilo de los dispositivos móviles.

básica de fijación móvil hoja de estilo:

<link rel="stylesheet" href="mobile.css" media="handheld" />

Detección por tamaño de la pantalla:

<link rel="stylesheet" href="mobile.css" media="only screen and (max-device width:480px)"/>

-1

par de aclaraciones. WURFL no usa RegExps, o al menos no de la forma en que el comentario parece implicar. RegExps puede estar involucrado para algunos UA que son particularmente difíciles de analizar, pero esto solo ocurre una vez para cada UA, luego de eso la coincidencia se guarda en caché.

Además, ScientiaMobile anunció recientemente la disponibilidad de un módulo WURFL para Varnish Cache, Apache y NGINX, por lo que ahora es posible usar WURFL en el nivel de "red".

Esta página tiene más detalles: http://www.scientiamobile.com/blog/post/view/id/25/title/HTTP-and-Mobile%3A-The-Missing-Header-

finalmente un descargo de responsabilidad: Sé que estas cosas porque yo soy el creador y director de tecnología de WURFL ScientiaMobile.

+1

Esto no es realmente una respuesta a la pregunta; Creo que quisiste agregar esto como un comentario sobre la respuesta que menciona WURFL. – millimoose

Cuestiones relacionadas