2008/12/08

Flexでブラウザ判定

Flex上でブラウザがFirefoxかどうか判定する必要があって、Flexから(JavaScriptを経由して)ブラウザを判別するコードを書いたのでメモ。

ActionScriptだけではブラウザの情報が得られなかったため、JavaScriptでブラウザ情報を判別させるファンクションを作って、それをExternalInterfaceクラスを使用して呼ぶようにした。

判別は結構適当。
だって、Firefoxかどうか分かればイイのだから。
そういう意味ではisFirefox()でも良かったかも。

Flexプロジェクトにある html-template/index.template.htmlファイルに以下を追記する。
<script language="JavaScript" type="text/javascript">
<!--
function getBrowserType() {
if(navigator.userAgent.indexOf("msie") != -1) {
return "ie";
} else if(navigator.userAgent.indexOf("firefox") != -1) {
return "firefox";
} else if(navigator.userAgent.indexOf("chrome") != -1) {
return "chrome";
} else {
return "other";
}
}
// -->
</script>

Flex側からは下記のように呼び出す。
ExternalInterface APIがブラウザでサポートされているかavailableプロパティで確認するのはお約束。

下記のサンプルでは、その後はExternalInterface.call()メソッドの戻り値をAlert.show()で表示している。
if(ExternalInterface.available) {
var browserType:String = ExternalInterface.call("getBrowserType");
Alert.show(browserType);
}

0 件のコメント: