Flashの埋め込みと読み取り


埋め込み:
 
Flash埋め込みページについてmsの歴史的な問題で少し乱れていますが、以下の2編(12)によると、以下の4つの方法が紹介されています.
1.Adobe公式/OE
 
 
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
        codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
        width="400" height="300" id="movie1">
    <param name="movie" value="http://img01.taobaocdn.com/tps/i1/T12MVIXfVNXXXXXXXX.swf"/>
    <embed src="http://img01.taobaocdn.com/tps/i1/T12MVIXfVNXXXXXXXX.swf" quality="high" width="400" height="300" name="movie"
           type="application/x-shockwave-flash"
           width="400" height="300"
           pluginspage="http://www.macromedia.com/go/getflashplayer"/>
</object>

 
2.SWFObject静/OO
 
 
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
        width="400" height="300" id="movie2">
    <param name="movie" value="http://img01.taobaocdn.com/tps/i1/T12MVIXfVNXXXXXXXX.swf"/>
    <!--[if !IE]>-->
    <object type="application/x-shockwave-flash"
            data="http://img01.taobaocdn.com/tps/i1/T12MVIXfVNXXXXXXXX.swf"
            width="400" height="300">
        <!--<![endif]-->
        <a href="http://www.adobe.com/go/getflashplayer">
            <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif"
                 alt="Get Adobe Flash player"/>
        </a>
        <!--[if !IE]>-->
    </object>
    <!--<![endif]-->
</object>

 
3.コード最小O
 
 
<object type="application/x-shockwave-flash"
        data="http://img01.taobaocdn.com/tps/i1/T12MVIXfVNXXXXXXXX.swf"
        width="400" height="300"
        id="movie3">
    <param name="movie" value="http://img01.taobaocdn.com/tps/i1/T12MVIXfVNXXXXXXXX.swf"/>
    <a href="go/getflashplayer">
        <img src="get_flash_player.gif" alt="Get Adobe Flash player"/>
    </a>
</object>

 
4.embed E単独使用
 
 
<embed
        id="movie4"
        src="http://img01.taobaocdn.com/tps/i1/T12MVIXfVNXXXXXXXX.swf"
        quality="high" width="400" height="300" name="movie"
        type="application/x-shockwave-flash"
        pluginspage="http://www.macromedia.com/go/getflashplayer"/>
 
このうちembedを単独で使用するのは望ましくない(あまりにも古い?肝心なのはfallback contentをサポートしていない)、objectの方法が推奨されている.
 
読み込み:
 
 
以上の4つの方法を許可して、flash urlを読み取ることができる汎用ツール関数を書くには、全面的に考慮しなければなりません.
1.現在の要素はembedであり、srcを直接読めばよい.
2.現在の要素はobject、dataはurl、dataを読み込む
3.現在の要素はobjectであり、nameがmovieのparamであり、そのparamのvalueを読み出す.
4.現在の要素の下にネストされたobjectまたはembedがあり、順次処理されます.
一方ieの下で注意しなければならないのは
1.ieではobject内にネストされたembed要素が取り出せません.
2.動的に生成するflashがドキュメントに挿入されていない場合、ieの下でgetElementsByTagNameですべてのparam要素を取得するには、大文字の「PARAM」パラメータを使用する必要がある.
 
demo @ google code
 
 
flash and accessibility
 
OEを使用すると、E書き込み方法で代替テキスト(fallback content)を書き込むことができなくなり、ユーザーがflashをインストールしていない場合、空白が直接表示され、情報が欠落します.
 
 
Oを採用するとOO firefoxでtabキーの陥没現象が発生し、tabがflashになってから出られなくなり、tabキーを押し続けても反応せず、アクセス性をひどく損なう.
 
 
では、JS埋め込み方法をお勧めします.
 
javascriptスクリプトを使用してflashラベルを出力するには、次の手順に従います.
ie : object
その他embed
JSはflashがインストールされていないと判断して静止画を出力する
JSを無効にするとnoscriptで画像を出力します
 
 
JSはflashのインストールの有無を判断する:
 
/**
     *    Flash    
     *      [M, S, R]     ,    undefined
     */
    function getFlashVersion() {
        var ver, SF = 'ShockwaveFlash';

        // for NPAPI see: http://en.wikipedia.org/wiki/NPAPI
        if (navigator.plugins && navigator.mimeTypes.length) {
            ver = (navigator.plugins['Shockwave Flash'] || 0).description;
        }
        // for ActiveX see:	http://en.wikipedia.org/wiki/ActiveX
        else if (window.ActiveXObject) {
            try {
                ver = new ActiveXObject(SF + '.' + SF)['GetVariable']('$version');
            } catch(ex) {
                //S.log('getFlashVersion failed via ActiveXObject');
                // nothing to do, just return undefined
            }
        }

        //           ,ver   undefined
        if (!ver) return undefined;

        //        ,ver   "Shockwave Flash 10.1 r53" or "WIN 10,1,53,64"
        return arrify(ver);
    }
 
from kissy flash .
 
 
参考資料:
 
object @ w3
OBJECT and EMBED syntax | Flash
Bye Bye Embed
object @w3school
 
Flash Satay: Embedding Flash While Supporting Standards
 
html 5はちゃんぽんで妥協しました
embed @ html5
object @ html5