- ベストアンサー
ユーザー環境の把握
サイトを閲覧しているユーザーの環境をFlashで把握する事は可能でしょうか?。 OS(Windows or MAC)/FlashPlayerのヴァージョン、ブラウザ(IEorNS)等の情報は取得出来るのでしょうか?。 よく、Javascriptでは把握出来るような事を聞いた事があるのですが。 どうぞ宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 確か、再生しようとするムービーが、インストールされているプレイヤーよりも新しいバージョンで作られている(動かないスクリプトなどが含まれている)場合は、Flash Player の方で警告を出してくれたかと思います。 「今すぐダウンロード」というボタンが付いている警告ウィンドウですので、ダウンロードセンターへの誘導なども自動的にやってくれます。 「 Flash のバージョンを判別」を利用する場合は、判別を実行する「 flash_detection.swf 」という swf ファイル(パブリッシュの時に作られます)を、作成したムービーと同じフォルダに置いておく必要があります。 仕組みとしては、先にこの判別用のムービーを再生してみてインストールされている Flash Player のバージョンを検出し、作ったムービーを再生できるバージョンであればそれの再生ページに、再生できないバージョンであれば代替ページ(ダウンロードセンターへの誘導などのページ)にジャンプする、といったところです。ですから、HTML ファイルは、判別ムービー再生用・コンテンツ再生用・代替と、3つ作成されます。 判別用のムービーの扱いが少々分かりにくいですし、一旦判別用のムービーを再生するという回り道をしてしまいますので、ページの表示は多少なりとも遅くなります。便利ではありますが、かえって難しいかも知れません。 簡単にできるところで、HTML ページのデザインの方で「最新のプレイヤーでご覧下さい」などの注意書きと、Flash Player の GET ボタンを付けてダウンロードセンターに誘導するくらいの配慮で、いかがでしょうか。 GET ボタンは Macromedia 社のHPで配布されています。 確かに Flash はOSやブラウザの違いに左右されず、複雑なアニメやインターフェイスを作れる利点もありますが、だからと言って何でもかんでも Flash にした方がいいというわけではありません。 Flash は容量の割に高機能なムービーにできることをウリにしてはいるものの、HTML 比べれば重いのも事実です。また、UI コンポーネントも、手軽には利用できるし、OSやブラウザによって表示が崩れるなどのリスクはないかもしれませんが、複雑なスクリプトと何重にも入れ子になったムービークリップで制御していますから、処理的にはかなり重いです。 Flash の利点・欠点を考慮した上で、効果的に利用してください。
その他の回答 (1)
- DPE
- ベストアンサー率85% (666/776)
ブラウザの種類の取得方法は分からないのですが、OS名と Flash Player のバージョンは、getVersion というアクションで取得できます。 ただし、getVersion は Flash Player 5 以上でないと検出できません。 例えば、 user_info = getVersion(); とすると、変数 user_info に WIN 7,0,14,0 という文字列が入ります。この例では、OSが Windows 、Flash Player 7.0 r14 です。 各情報を個別に利用するには、String オブジェクトで文字列から必要な情報を取り出してください。 (↓このスクリプトをコピーする場合は、各行頭の全角のスペースを、全て半角のスペースかタブに置き換えてください。このまま使うとシンタックスエラーになります) //”,”を区切りにして情報を分割 str = new String( getVersion() ); str_temp = str.split( "," ); //OS名を取得:最初の3文字 os = str.substr( 0 , 3 ); //Flash Player のメジャーバージョン:半角スペースの次の文字 player_ver = str.substr( str.indexOf( " " ) + 1 , 1 ); //マイナーバージョン minor_ver = str_temp[1]; //リリース番号 release_no = str_temp[2]; getVersion で取得した文字列は、各数字が”,”で区切られています。この点を利用し、String.split で”,”を区切りの文字として分割します。分割した文字は、それぞれが str_temp という配列に入ります。 str_temp の中身は次のようになります。 str_temp[0] → WIN 7 str_temp[1] → 0 str_temp[2] → 14 str_temp[3] → 0 区切りの文字が”,”のため、OSの文字列と Flash Player のメジャーバージョンの数字が切り離せません。 そこで、String オブジェクトの、指定の位置から指定の字数を取り出す substr メソッドと、指定の文字を探す indexOf を使って、OSとメジャーバージョンの情報を取り出します。 OS名は最初の3文字です。substr メソッドの引数で指定して取得できます。 (OS名については、Windows と Mac では確認できたのですが、UNIX など他のOSではどのような文字列になるかは確認できませんでした) Flash Player のメジャーバージョンは、最初に出てくる半角スペースの、次の位置の文字であると言えます。指定の文字の位置を探す indexOf メソッドで半角スペースの位置を探し、その次の位置を substr メソッドの第1引数に渡すことで取り出せます。 残りのマイナーバージョンとリリース番号は、文字列を分割した配列の中身を、そのまま利用できます。 HTML や JavaScript は、ブラウザによっては動かないものがあったり、同じ動作をさせるにも違う表現でなければならなかったりするので、ブラウザを判別する手法はよく使われます。 しかし、Flash Player はOSやブラウザによって動作が違うというのは、不具合等を除けば殆どないと言っていいでしょう。Flash の動作に関してだけ言えば、ブラウザを判別しなければならない理由は、ないと思うのですが。 なお、Flash Player 4 以前のバージョンの判別については、テクニカルノートをご参照ください。
補足
DPEさん、いつもありがとうございます。 そうなんですか、FlashはブラウザやOSの違いを吸収してくれるわけですか!。そうすると、Flashに委ねる事は良い事なんですね。 現在、MX2004で作成しているものですから、Flash5では動作したいScriptなどがあり、その為にFlash5が導入されているユーザーに対して最新ヴァージョンを導入してもらうようにしたいと思っていました。 パブリッシュの設定で「Flashのヴァージョンを検出」というのがありましたが、そちらで設定した方が素人には良いですか?。 どうぞよろしく御願い致します。
お礼
DPEさん、 いつもありがとうございます。 今回は、OBJECTタグ内のCODEBASEに自動ダウンロードの記述行なうことにします。 プラグインを使用する場合の対応については別途考えます。 どうもありがとうございます。