ホーム >> 左脳Script >> Adobe Flash >> swfobject.js の expressInstall.swf 使用法

swfobject.js の expressInstall.swf 使用法


| トラックバック(0) はてなブックマークに追加 Yahoo!ブックマークに登録 del.icio.us に追加 livedoorクリップ に追加 Buzzurl に追加
一部では、フラッシュ貼り付けには swfobject.js を使うのが一般的とされていますが、その swfobject.js の売りの機能として「自動バージョンアップ」というものがあります。


swfobject.js バージョン1.5

まずは、swfobject.js をブログから。→ダウンロードリンク

いきなりダウンロードのリンクですが、この真上の記事に自動インストールの記述があります。英語で。

Using Express Install with SWFObject

SWFObject has full support for the Adobe Flash Player Express Install feature. Your users never have to leave your site to upgrade their player.

To use ExpressInstall, you must first upload the expressinstall.swf to your web server. Then, use the useExpressInstall method to specify the path to your expressinstall.swf. If no path is specified, SWFObject will look in the same folder as the current HTML page.


<script type="text/javascript">
       var so = new SWFObject("movie.swf", "mymovie", "200", "100", "8", "#336699");
       so.useExpressInstall('expressinstall.swf');
       so.write("flashcontent");
</script>

If you want to see ExpressInstall in action, you can install Flash player 7 (or 6.0.65) and visit this page.

If you wish to customize the Express Install feature, the source code to the expressinstall.swf is included with SWFObject.

If your Flash movie is in a popup window, or you wish to redirect the user to a different location after they complete the ExpressInstall update, you can use the xiRedirectUrl attribute to redirect the user back to your landing page instead of the actual page with your Flash movie.

<script type="text/javascript">
   var so = new SWFObject("movie.swf", "mymovie", "200", "100", "8", "#336699");
   so.useExpressInstall('expressinstall.swf');
   so.setAttribute('xiRedirectUrl', 'http://www.example.com/upgradefinished.html'); // must be the absolute URL to your site
   so.write("flashcontent");
</script>
どうやら、自動インストールの expressInstall.swf が、Flash7以上(6.0.65以上)でないと動かない(保障しない?)という事のようです。

上記ダウンロードページから落としたアーカイブの中に様々ファイルがあり、実験サンプルもある模様。
バージョンを調べたり、今回主題としている自動インストールの物もあります。 「それを参考にシテクレ」では話が終わってしまうので、自力で検証を進めてみます。


まずアーカイブ中にある、いかにもバージョンチェックサンプルっぽい名称の flashversion.html を開いてみます。
動作環境は、Vmware によるほぼスッピンに近い WindowsXP(SP3までWindows Update 済み)なのでバージョンは「6.0.88」と出ました。
しかし、Windows Update には Adobe Flash Player のセキュリティアップデートが含まれないのは、何故なんでしょう・・・

ひとまず、以下のコードでhtmlを作成し、開いてみます。

<html>
<head>
<script type="text/javascript" src="swfobject.js"></script>
</head>
<body>
<h1>swfobject.jsのExpressInstall.swfてすと?!</h1>

<div id="flashcontent">
  This text is replaced by the Flash movie.
</div>

<script type="text/javascript">
       var so = new SWFObject("so_tester.swf", "mymovie", "200", "100", "8", "#336699");
       so.useExpressInstall('expressinstall.swf');
       so.write("flashcontent");
</script>

</body>
</html>
これを InternetExplorer7 (7.0.5730.13) で開いてみると・・・

dialog0.PNG

ダイアログが出ました。メッセージをよく読むと、

「今 Adobe からダウンロード出来ねえから、あとでもっかいやってくれるか?(意訳)」

とか。

「直接、adobe.com/go/getflashplayer/ に行ってくれ。」

とも書いてあるようです。


・・・どうやら、自動インストールの expressInstall.swf が現在の Adobe のサイトに合っていないようです。
やはり、swfobject.jsバージョン1.5 は昔の物のようですね。
現時点(2009年6月26日)で最新は バージョン2.2 らしいので、最新バージョンで自動インストールの試験をしてみましょう。


swfobject.js バージョン2.2

最新の swfobject.js は、「Google Code プロジェクト」 として公開されています。 2009年6月26日時点でバージョンは2.2 です。

Google Code 「 swfobject.js 」

ダウンロードすると、swfobject.js、expressInstall.swf 他ソース同梱のアーカイブを入手できます。


早速、自動インストール試験をば。
なにやら、貼り付けの方法が2通りあるようですが・・・ひとまず、今までの方法で可能か試しましょう。


前述のテストページコードに、新しい swfobject.js、expressInstall.swf を合わせただけ。では、動かなかったので修正。

<html>
<head>
<script type="text/javascript" src="swfobject.js"></script>
</head>
<body>
<h1>swfobject.jsのExpressInstall.swfてすと?!</h1>

<div id="flashcontent">
  This text is replaced by the Flash movie.
</div>

<script type="text/javascript">
var flashvars = {};
var params = {};
var attributes = {};
swfobject.embedSWF("so_tester.swf", "flashcontent", "200", "100", "8","expressInstall.swf", flashvars, params, attributes);
</script>

</body>
</html>
バージョン1.5 の頃とは記述は違うようです。コードの共存の為でしょうか。


expins0.PNG どうやら、動いている様子。
画面のヘルプボタン(?ボタン)押下で、adobeのページが別ウィンドウとして開きます。

上記のコードで指定した再生のターゲットバージョンは8ですが、それとは無関係に最新バージョンのインストールを促すようです。当然といえば当然ですが。

expinscmp.PNG 「はい」で、次に進むと、一瞬のダウンロード画面があり、 インストール完了(Adobeの現バージョン表示する)ページが別ウィンドウで開きます。

expressInstall.swf 自体は、元のフラッシュの大きさで再生されるようです。
このサイズが小さすぎると、この画面のように微妙にテキストがはみ出たりと問題があるかもしれません。 試験のコードでは横幅200ピクセルなのですが、これでは少々小さいようですね。


また、ブラウザにもよる(プラグイン形式かActiveXか、等)が、ブラウザの再起動を要求されます。
このあたりは、ブラウザの仕様なので仕方ない所。




もう一つのフラッシュ貼り付け方法は試していませんが、expressInstall.swf の指定が出来るので、動作自体は大差ないと思います。


試験環境

「Windows XP SP3 + InternetExplorer7 (7.0.5730.13)」にて試験。

InternetExplorer6 で試そうと、WindowsXP(SP無し)クリーンインストール直後の起動をした所、 動作しませんでした。バージョンをみたら、なんと 5.0.42 。早速アップデート。
SP2 にアップデート後では、6.0.79 に。
メジャーバージョンが6ですが、動作しました。正しくバージョンアップし、 Adobe Flash Player 10 をインストール出来ました。

swfobject.js バージョン1.5 のドキュメントにあった「6.0.65以上」というのは、バージョン2.2 の expressInstall.swf にも当てはまるようです。


一応まとめ?!

expressInstall.swf は本当に簡単に、Adobe Flash Player(プラグイン、ActiveX)をアップデート出来る、良い手段と言えるでしょう。ユーザーに難しいことを殆ど感じさせない、Adobe の姿勢も評価できると思います。

しかし、「 swfobject.js バージョン1.5 の expressInstall.swf が古く動作しなかった」事を考えると、今後の「バージョンアップ」又は「Adobe Flash Player 公開サイトの構造変更」などで、うまく動作しなくなる可能性の懸念も捨てきれません。

我々エンドユーザーが管理できる方法がなくもないのですが・・・
expressInstall.swf のソースコードがあるので、そのソースのURLを自サイトなどにし、自サイト公開中に限り、自サイト中の flash再生 の保障の為、バージョンアップアーカイブを自ら管理する方法が考えられます。

しかし、サイト管理者が、Adobe Flash Player の最新バージョンを自力でチェックし、自サイトのアーカイブに反映させなければならない手間や、当然起こるであろう「新バージョンリリースのタイミングのずれ」から来る、セキュリティリスクを考えると、それなりに危険でもあります。

Adobe としても、この方法は喜べないでしょうし、手間を考えれば現実的ではないですね。


swfobject.js を利用するサイトの管理者は、swfobject.js の動向をチェックしておく必要があるようです。


その他、公式ドキュメントなど

Adobe自体がこんなドキュメントを公開しているのを後から知る。

また、Google Code プロジェクト からリンクされている、日本語訳ドキュメントリンクは以下。


今回、初めて swfobject.js のドキュメントを"真面目に"読む機会となった訳ですが、 最新バージョンでは Flash貼り付け に関して、新しい(objectタグなので古い?!)方法が提唱されています。

今まで(swfobject.jsバージョン1.5の時代)で、扱われてきた <div id="~">と<script>による Java Script の方法から一転して、<object>タグに先祖帰りの状態です。

このような事態になった最大の理由として「今までの方法では、Java Script が有効でないとFlashの再生が出来ない」という問題があった為と説明しています。
そもそも、Flash と Java Script はそれぞれ全く独立したもので、本来個々の依存性はありません。
最近でこそ、Ajax人気で Java Script との連携が流行しましたが、あくまで Java Script と Flash が連携すると、より表現力が豊かになるという意味であって「Java Script がないと Flash が再生出来ない」という物ではないのです。

もう一つは、当時圧倒的シェアを誇っていた InternetExplorer の ActiveX の問題でしょうか。
Flash を直接貼り付けても、警告の為に、さらに1クリックしないと、再生が始まらないという「特許がらみの修正」があった為です。

現在(の新しいバージョン)は、これは改善され(むしろ、以前の状態に戻った)たとも聞きます。 しかし依然として、一部の 古いInternetExplorer や Opera 等では、まだ「クリックによるアクティブ化」が必要なブラウザもあります。
万全、完全ではないのですね。


このような新処方(jsに依存しない方法)が提唱されていますが、今まで( swfobject.js バージョン 1.5 での方法)のJava Script でダイナミックに DOM書き換え する方法も継続して使用できるようですので、大きな問題はないでしょう。なにより簡単ですしね。




このサイトのアクセス解析にも・・・何故か1割にも上る「Java Script 無効」ユーザー(ボットの可能性は、考えない。考えたくない。アーアーアー、聞こえない聞こえない)がいらっしゃるようなので、対応したい所ですね。



トラックバック(0)

トラックバックURL: http://n-yagi.0r2.net/sanoupulurun/mt-tb.cgi/184

ホーム >> 左脳Script >> Adobe Flash >> swfobject.js の expressInstall.swf 使用法

アーカイブ

このブログ記事について

このページは、n-yagiが2009年6月26日 18:28に書いたブログ記事です。

ひとつ前のブログ記事は「Adsense「Googleカスタム検索」」です。

次のブログ記事は「マウス座標を正しく取得するには」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Creative Commons License
このブログはクリエイティブ・コモンズでライセンスされています。