2012-08-31 46 views
9

客戶要求在他們的網站上添加一個打印按鈕,並且希望它對於沒有打印能力的用戶隱藏,例如,大多數移動設備。檢測用戶是否具有打印功能?

有沒有辦法通過JavaScript來檢測,如果客戶端有打印功能?

+10

總之,沒有。瀏覽器並不瞭解任何有關連接的設備。您當然可以知道客戶端是否是移動設備,並且隱藏了移動設備的按鈕,但您無法分辨存在打印機的任何信息。 – meagar

+2

這是爲公共互聯網網站(在這種情況下是不可能的)或私人內部網站點?如果是用於Intranet站點,您是否需要特定的瀏覽器,並且可以安裝插件的ActiveX? –

+1

...並且知道設備是「移動的」也非常困難,因爲近來野外設備種類的數量增長如此之快。 – Pointy

回答

0

如果WURFL正則表達式對於您的應用程序太慢,或者您正在使用清漆,魷魚或其他任何不允許您使用WURFL的東西,那麼您可以嘗試使用JS(導航器)來分析用戶代理字符串.userAgent),並找出類似「iOS版本4+」的東西,至少這些設備具有打印功能(只要它們可以通過網絡打印機到達網絡)。這是一個簡單的解決方案(但不會覆蓋所有iOS設備,因爲它們有太多不同的用戶代理字符串)。

你可以找到大量的用戶代理字符串的例子在這裏: http://deviceatlas.com/

1

要求是有缺陷的,因爲大多數用戶代理可以「打印」和的UA是否能夠打印知識不是網站業務內容。

很多移動瀏覽器可以打印和大多數Web瀏覽器可以打印,即使沒有連接的打印機(打印到PDF,雲打印等)。對於任何用戶代理而言,在用戶不知情的情況下明確聲明其打印功能的任何內容都是一個安全問題。這就是打印樣式表所在的位置(因此網站不必知道它是否被打印)。

你可以做的是隱藏在小屏幕的用戶代理的按鈕,這些用戶可以使用用戶代理本身仍然打印他們的文檔。您還可以檢測特定的用戶代理並隱藏它們的按鈕。

鏈接

http://www.alistapart.com/articles/return-of-the-mobile-stylesheet:討論移動樣式表和相關的問題。

http://mobile.smashingmagazine.com/2010/11/03/how-to-build-a-mobile-website/#mobile-stylesheets:更多關於手機的樣式表。

基本移動樣式表附件:

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

檢測由屏幕尺寸:

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

-1

夫婦澄清。 WURFL不使用RegExps,或者至少不以評論似乎暗示的方式使用RegExps。對於某些特別難分析的UA,RegExps可能會涉及到,但對於每個UA,這隻會發生一次,然後匹配被緩存。

此外,ScientiaMobile最近宣佈WURFL模塊光油緩存,Apache和Nginx的可用性,所以使用WURFL在「網絡」級別現在是可能的。

這個頁面有更多的細節:http://www.scientiamobile.com/blog/post/view/id/25/title/HTTP-and-Mobile%3A-The-Missing-Header-

最後一個聲明:我知道這些事情,因爲我是WURFL的創建者和ScientiaMobile的CTO。

+1

這不是真正的答案,我想你的意思是把這個添加爲對提及WURFL的答案的評論。 – millimoose

相關問題