すがブロ

sugamasaoのhatenablogだよ

AS3ライブラリの BrowserUtility クラスをリリースしました

BrowserUtility クラスとは

Flashからブラウザ上の情報……例えばURLやブラウザの種類の判定などを行う場合、FlashのAPIとしては直接操作できないんですよね。
なので、Flash→JSのライブラリである、ExternalInterfaceってのを使わなくてはいけない。
で、毎回必要にせまられて、ピンポイントな動作だけ書くのも面倒というかDRYじゃないので、ライブラリにしちゃえば良いじゃん、という流れです。

BrowserUtility について

簡単な説明

まず、このライブラリでは三つのクラスを提供します。

  • BrowserUtility ライブラリのメインクラス
  • Browser ブラウザ、バージョン判定用クラス
  • Location JS の window.location 相当のクラス

ただし、BrowserUtility のクラス以外は直接使用することはないでしょう。
主なクラス

import com.github.sugamasao.browser_utility.*;

BrowserUtility.browser.isIE // true or false
BrowserUtility.browser.version // 8
BrowserUtility.location.href // http://example.com

上記のように、BrowserUtilityクラスの static メソッドを呼ぶことで、内部でクラスを生成されます。
また、一度ExternalInterfaceで取得したデータはキャッシュされるので、メソッドを呼ぶ度にExternalInterfaceが実行されるようなことはありません。
ただし、明示的にExternalInterfaceを使用して取得しているデータを更新したい場合は以下のようにします。

import com.github.sugamasao.browser_utility.*;

BrowserUtility.refreshBrowser.isIE // true or false
BrowserUtility.refreshLocation.href // http://example.com

refresh〜のメソッドを使用することで、ExternalInterfaceによるデータの取得を改めて行います。

Browserクラスによるブラウザ判定対応

以下のブラウザを判定します。

またバージョン情報についても、一般的なメジャーバージョン・マイナーバージョンは拾えています。
例えば、Safari ならば 1.0 1.1 1.2 2.0 3.0 ... といった具合です。

Location クラスで取得できる情報

JSによる window.location.hogehoge で取得できるものとまったく同一です。

最後に

ブラウザ判定のテストデータとして、下記のページのユーザエージェント一覧を使用させて頂きました。感謝です。

というわけで、興味がわいた方は、BrowserUtilityを使ってみてください。