- ベストアンサー
perlでアクセス端末の解像度を知る方法
- アクセス元の端末(たとえばスマホなのかPCなのか)で表示する画像を変えたいため、アクセス端末の解像度を取得したい。
- JavaScriptの情報はヒットするが、use Term::ReadKeyを使っても動作しない。
- Androidの場合、スマホとタブレットの解像度が異なるため、正確な振り分けができず困っている。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Mobile::UserAgentは古すぎか。。。 HTTP::MobileAgentのdisplayメソッドを使えば、多少ましでしょうが、 HTTP::MobileAgentは2012年が最新なのでどちらにしろ完璧な解像度を得るのは 不可能でしょう。
その他の回答 (3)
- _--_1l1_1_
- ベストアンサー率67% (102/152)
スマホは、完璧ではない(=全ての機種を判定できるわけではない)ですが、 Mobile::UserAgentのscreenDimsメソッドを使えばできると思います。 PCのクライアントの解像度はPerlだけで判定するのは無理でしょう。 HTTPリクエストに解像度の情報は含まれていないので。 javascriptで対応したほうがいいと思います。
お礼
ありがとうございます 次も回答頂いてますので、そちらでコメントします
- ORUKA1951
- ベストアンサー率45% (5062/11036)
それは解像度をチェックしているのではありません。単にユーザーエージェントを調べているだけで、解像度情報はHTTP要求ヘッダにはありません。 スマホもPCも同じmedia="screen"であっても、幸いにスマホはCSS3に対応していますから、その拡張であるmediaqueryが利用できます。 単純に端末の解像度で、ブラウザ自身の機能を使ってスタイルシートを切り替えるほうがはるかに容易です。javascriptのように端末でjavascriptを禁止していても利用できますし、スマホを回転させて縦横変えても切り替わります。
お礼
ありがとうございます 確かにスタイルシートで切り替えする方が賢明のようですね そちらで考えてみます
- t_ohta
- ベストアンサー率38% (5238/13705)
そもそも、端末が送信してこない情報をサーバ側で知る術はありません。 セッション等でサイトへの初回アクセスを検知し、初回時にJavaScriptだけのページを送って解像度情報をPOSTさせてから、本来のコンテンツを送出するようにするなどの工夫が必要でしょう。
お礼
ありがとうございます。 そうですよね、確かに送信してこない情報を知るすべなんてないですね
お礼
ありがとうございます 教えて頂いた方法でどこまで解像度が得られるか試してみます