• ベストアンサー

swfって…

HTMLでswfファイルを埋め込むときどんなタグを使用したらいいのでしょうか? <object>は未対応ブラウザがあるようですし<embed>は非推奨ですよね。 本を買ったり、ネットで検索してみたのですがいまいちわかりません。 どのように記述すれば、一番問題がないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

> <object>は未対応ブラウザがあるようですし うーん,具体的にそのブラウザを教えてもらえますか? LLLuna氏からブログにもらったコメントによると, <object type="application/x-shockwave-flash" data="hoge.swf" style="width:300px;height:300px"> <param name="movie" value="hoge.swf" valuetype="ref" type="application/x-shockwave-flash"> <param name="bgcolor" value="#ffffff"> <param name="loop" value="false"> <param name="quality" value="high"> </object> という記述によって >IE7,Firefox2,Opera9,Safari3において正常に動作します。 >Firefoxはobject要素のdata屬性値のみを、 >IEはparam要素のname="movie"(name="src"も可)のvalue屬性値のみを、 >Opera/Safariはその兩方(前者優先)を再生するFlashムービーとして見るやうです。 >(Safariの場合、ローカルだとムービーが讀み込まれない模樣) とのことです。 ================== IE と Fx/Opera/Safariは Flashの再生に使われるプラグインが違う (前者がActive Xコントロール(.ocx)で後者が.xptとdllだったと思う。なおインストーラも違う。)ため, Adobeの古い説明を真に受けて #1氏の回答のようにclassidを指定していると IE動くけど, FirefoxとOperaでは動作しない とかいう状況になります。外せば動くのに。 (で,動かないと勘違いしてembedを入れる,という人もいる) #互換性のために,classidを無視したらどうだ?とかいう提案も Bugzilla.mozilla.orgのどこかで見たけど,他の用途にも使われる可能性があるということで却下されてました。 上記に記述したとおり, object要素のdata属性だけ指定してIEで動作しないと嘆いたり param要素だけで指定して(Or object要素もsrc属性だと思い込んで)Firefox系で動作しないと嘆いたり, code属性(applet要素にはあるが,object要素には無い)を使っていて動かないと嘆いていたり というパターンにも陥っているかもしれませんね。陥らないように。 #XHTMLの場合,param要素の閉じ方の書式が違います。念のため。 ====================== #Firefox系以外はEcmascriptによってsrc属性の値を書き換えても Flash自体が入れ替わらなかったことがある #Firefoxのバージョンによっては「object要素のtype属性でMIME typeを指定しても,サーバが正しいMIME Typeを遣さないとき,そのobjectが表示されない」というのがあったこともある ======== object要素は内容に%flowを持ったと思うので, ブラウザで直接表示しないユーザーのために ファイル自体へのリンクをa要素で張っておくとか, できればzipファイルにまとめて,ダウンロードできるようにしておくと Excellent! ==================== ところで,少し話題が外れますが 同じくobject要素を利用して埋め込むものに, Java appletがあり, こいつもSunの情報で混乱を招くような形になっています。 (HTML 4.01にもapplet要素というものが残ったが, XHTML 1.1で破棄された) #Java appletもたぶんプラグインがIE系とそれ以外で別物ですから 同様の問題が発生すると思います。 codebase属性はW3Cの規格によると object要素のdata属性等で指定されるパスの基底URIを記述するはずなのに 当初のWebで大量に氾濫したのはIEで動作していた,「プラグイン自体」をユーザーに入手させるためのURIで現在のFirefoxが「正しく」解釈すると動作しない,等のことも起こっているようです 参考: http://www.w3.org/TR/html401/struct/objects.html#adef-codebase-OBJECT https://bugzilla.mozilla.org/show_bug.cgi?id=178780 https://bugzilla.mozilla.org/show_bug.cgi?id=39047 https://bugzilla.mozilla.org/show_bug.cgi?id=123722 https://bugzilla.mozilla.org/show_bug.cgi?id=167601 オマケ(あんま関係ない): http://www.watch.impress.co.jp/game/docs/20070927/wv.htm

flicker
質問者

お礼

おおこれはすごい! どうも有り難うございます。 こんな事細かに説明していただいて大変助かります。 リファレンスに実際のソースの記述の仕方が載ってなかったり ネットで見つけた情報は情報が古いためHTMLのバージョンやブラウザ が合わなかったり、DWの吐き出すソースが理解できなかったりしたのですが これで解決です。 どうも有り難うございましたm(_ _)m

その他の回答 (2)

noname#66720
noname#66720
回答No.3

タグじゃないですが、Javascriptで挿入する方法があります。 SWFObject http://blog.deconcept.com/swfobject/ マニュアルを日本語訳されているサイト http://www.trick7.com/blog/2006/06/15-135235.php

flicker
質問者

お礼

御回答有難うございます。 Javascriptで埋め込む方法もあるんですね。 参考になります。 リンクまで貼っていただいてどうも有り難うございましたm(_ _)m

noname#56882
noname#56882
回答No.1

Flash Playerプラグインを配布しているAdobeのサイトでは <OBJECT CLASSID="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" CODEBASE="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" WIDTH=300 HEIGHT=300> <PARAM NAME=movie VALUE="test.swf"> <PARAM NAME=bgcolor VALUE=#FFFFFF> <PARAM NAME=LOOP VALUE=false> <PARAM NAME=quality VALUE=high> <EMBED SRC="test.swf" WIDTH=300 HEIGHT=300 bgcolor=#FFFFFF LOOP=false QUALITY=high PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" TYPE="application/x-shockwave-flash" </EMBED> </OBJECT> を推奨しているようです。参考:http://support.adobe.co.jp/faq/faq/qadoc.sv?228623+002 [embed要素]については下記を参考にしてください。 http://www.seo-equation.com/html/html/embed

flicker
質問者

お礼

御回答有難うございます。 ソース、リンク先参考にします。

関連するQ&A