当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。
記事そのもののリンクについてはご自由に行っていただいてよいです。

テクてく Lotus 技術者 Slack に参加しよう!

2016年9月21日水曜日

XSPUserAgentのテストをしてみた

皆さん、XPages開発は順調ですか?

XPages開発をするということは、Notesクライアントで使っていたNotes DBをWeb化するというのが基本路線でしょう(XPinCといったNotesクライアントでXPagesアプリケーションを動作させる方法もありますが。

Web化する場合、使用するブラウザによっては想定していたのと違う動きをすることがあります。
そのような場合、ユーザーエージェントによってHTTPリソースを取得して、その値でブラウザ情報を判断して動きを変えるようにしたりします。

従来のNotes Webアプリでもユーザーエージェントは取得できましたが、XPagesの場合はどうすれば良いのでしょうか?

実は、XPagesでは、そのための関数が一通り用意されています。
JavaScriptのXSPUserAgentクラスを利用します。
取得方法は簡単で、SSJSで以下の記述をするだけです。

var uagt = context.getUserAgent();


これでユーザーエージェントがuagtという変数に格納されました。
後は、このクラスに設定してある関数を実行すれば結果を得ることができます。
ブラウザ名やバージョン等が取得できます。
実際に簡単な画面を作って実行したものが下図になります。

Chromeで実行したときの画面

どうでしょう。
そんなに難しくはないですよね。

たとえば、ブラウザ情報を取得したい場合は
context.getUserAgent().getBrowser()
と記述します。


ただ、一つ難点があります。
下図を見てください。同じXPagesアプリケーションをIE11で実行したときのものです。
IE11で実行したときの画面

赤枠の部分をみると、
ブラウザ情報が取得できていない。当然ブラウザのバージョン番号も取得できていない。そもそもIEであると判断されていない
ということがわかります。

このままではユーザーエージェントを使ってブラウザ情報を取得できない!ということになってしまいます。
うーん。どうしたものか・・・と悩みつつ、回避策はないものかと調べていたら、
ありましたよ。すでに。まぁ当たり前ですよね。

こちらです。
XSPUserAgent Methods Do Not Detect IE 11


さらに、すでにXSnippetsというサイトにも出ているじゃありませんか。


便利ですね。
何はともあれ、IE11でもユーザーエージェントを駆使すれば情報を取得することがわかりました。


ちなみに、このXSnippetsというサイト、日本語版があるのはご存知ですか?
XSnippets 日本語版
です。
今回のIE11の判定方法のように、みなさんが独自で作成したコードなんかを共有しましょうというサイトです。
苦労して書いたコードを他の人に簡単に提供するのは嫌かもしれませんが、自分が提供することで他のお客様の問題も同時に解決できるという風に考えればいいことだと思います。
もしかしたら、この中に自分が困っていることを解決してくれるコードもあるかもしれませんし。

ちなみにIBM Championになるためのアピールポイントとしても利用可能です(笑)

また、QAサイト等で質問して、正解が得られた場合も、そのコードを登録してくださると、他の人が利用しやすくなると思いますので、是非ご協力ください。


それでは今日はこの辺で・・・






Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
お問い合わせはこちらから→Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: