SWFObjectで一瞬divタグ内が見えるのを回避する方法
最近良くやってるのがこんな方法。
<div id="movieBox" style="width:640px; height:400px;"> <noscript> <p>本サイトはJavaScriptを利用しています。JavaScriptをONにしてご覧下さい。</p> </noscript> </div> <script type="text/javascript" src="swfobject.js"></script> <script type="text/javascript"> //<![CDATA[ var so = new SWFObject( "myFlash.swf", "myFlash", "100%", "100%", "9", "#ffffff" ); if( ! so.write( "movieBox" ) ) { document.getElementById( "movieBox" ).innerHTML = "最新のFlash Playerをインストール下さい。"; } //]]> </script>
説明すると、
- Flashのバージョンが足りない場合はif( ! so.write() )の条件が実行されて、divタグの中に「最新のFlash〜」の文言が挿入されます。
- そもそもJavaScriptをオンにしていない場合はnoscriptタグの中が表示され、JavaScriptをオンにするよう催促します。
- バージョンが足りている場合は、so.write()が実行され、divタグの中にobject/embedタグが掃き出されます
- Flashの幅と高さはdivタグのCSSで設定してます。new SWFObjectの幅と高さの引数は100%にしておけば、コンテンツ毎に直す必要がありません。
結局これだとSWFObject利点のXHTMLバリッドで記述してSEO効果も保つ、という技が成り立ちません。でも、商業的には一瞬表示されるのはクライアントNGとなる可能性があるので、上のやり方が現状ベタ−だと思ってます。もっといい方法あったら教えてください。