クライアントは、サイトに印刷ボタンを追加するように要求し、ほとんどのモバイル デバイスなど、印刷する機能を持たないユーザーに対して非表示にしたいと考えています。
クライアントに印刷機能があるかどうかを JavaScript で検出する方法はありますか?
クライアントは、サイトに印刷ボタンを追加するように要求し、ほとんどのモバイル デバイスなど、印刷する機能を持たないユーザーに対して非表示にしたいと考えています。
クライアントに印刷機能があるかどうかを JavaScript で検出する方法はありますか?
ほとんどのユーザー エージェントは「印刷」でき、UA が印刷できるかどうかの知識は Web サイトのビジネスではないため、この要件には欠陥があります。
多くのモバイル ブラウザーは印刷でき、ほとんどの Web ブラウザーは、プリンターが接続されていなくても印刷できます (pdf への印刷、クラウド プリントなど)。ユーザーエージェントが、ユーザーの知らないうちに印刷機能について明示的に何かを述べるのは、セキュリティ上少し問題があります。それが印刷スタイルシートの目的です (そのため、Web サイトは印刷されているかどうかをまったく知る必要がありません)。
できることは、小さな画面のユーザー エージェントでボタンを非表示にすることです。これらのユーザーは、ユーザー エージェント自体を使用してドキュメントを印刷できます。特定のユーザー エージェントを検出し、それらのボタンを非表示にすることもできます。
リンク
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)"/>
アプリケーションに対して WURFL 正規表現が遅すぎる場合、または varnish、squid など、WURFL を使用できないものを使用している場合は、JS (navigator.userAgent) を使用してユーザー エージェント文字列を分析し、少なくともこれらのデバイスには印刷機能があるため、「iOS バージョン 4+」のようなものを見つけてください (ネットワーク プリンターを備えたネットワークに到達している限り)。これは単純な解決策です (ただし、iOS デバイスにはさまざまなユーザー エージェント文字列が多すぎるため、すべてをカバーすることはできません)。
ここでユーザーエージェント文字列の例をたくさん見つけることができます: http://deviceatlas.com/
いくつかの説明。WURFL は RegExps を使用していません。少なくとも、コメントが暗示しているような方法では使用していません。RegExps は、特に分析が難しい一部の UA に関係する場合がありますが、これは各 UA に対して 1 回だけ発生し、その後一致がキャッシュされます。
また、ScientiaMobile は最近、Varnish Cache、Apache、および NGINX 用の WURFL モジュールが利用可能になったことを発表したため、「ネットワーク」レベルで WURFL を使用できるようになりました。
このページには詳細があります: http://www.scientiamobile.com/blog/post/view/id/25/title/HTTP-and-Mobile%3A-The-Missing-Header-
最後に免責事項: 私は WURFL の作成者であり、ScientiaMobile の CTO であるため、これらのことを知っています。