まだまだ続く、「美しくBGMを表示する方法」の探求。
BGMなんだから、見た目にこだわらなくても再生されれば……という意見は却下します。
WMP用のactivx objectタグを書いて、非対応だった場合にEMBEDで表示するよう、内部に書いておくパターン。
↓こんな感じ。
<OBJECT classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" width="200" height="26" border="1">
<PARAM name="FileName" value="./test.mid">
<PARAM name="AutoStart" value="true">
<EMBED SRC="./test.mid" width="200" height="16" autostart="true">
</EMBED>
</OBJECT>
▲Mac OS XのSafari。QuickTimeのプラグイン。もう、この環境は鉄板でこの表示ね。
Safari ver3にしたんだけど、EMBEDがなくても表示される。IE用の記述を解釈するようにしたらしい。ナイスね。
▲昨日、QuickTimeで表示されてた環境のWin XP IE7。
WMPでの表示になってる。見栄えを良くするために、「border="1"」追加。
でも、やっぱりWMPの表示はダサダサなので、QTがある環境ではそちらを優先したい。
んで、「objectタグは入れ子にして『外側から優先して使用し、非対応なら内側を使用』ということにできる」、というルールを採用してみる。
↓こんな感じで。
上の<OBJECT>がQuickTimeの記述、下の<OBJECT>がWMPの記述。
<OBJECT classid="CLSID:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" width="200" height="16" border="0">
<PARAM name="SRC" value="./test.mid">
<PARAM name="AutoPlay" value="true">
<OBJECT classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" width="200" height="26" border="1">
<PARAM name="FileName" value="./test.mid">
<PARAM name="AutoStart" value="true">
<EMBED SRC="./test.mid" width="200" height="16" autostart="true">
</EMBED>
</OBJECT>
</OBJECT>
▲上のverでWMP表示されたWin XP IE7環境。うん、QTになって昨日出てた上下の白枠もない。スバラシイ。
ところが……。
▲IE6にはobjectタグの入れ子にバグがあるらしく、両方表示されてしまう。だぁぁ、ゲイツ〜。
IFRAMEに読み込むから、1個目だけが表示されるように調節できそうだけど、AutoPlay(AutoStart)は必須なので、音が混ざる〜。
▲QT入ってないIE6だと、こんなんなっちゃうし。もう無理……。
今月のWindows Updateで、IE7のインストールを奨めはじめたみたいだし、もうIE6なんか知ったこっちゃねぇ……ってワケにはいかないよなぁ。
そういえば、IE7でQTプラグインが入ってないパターンのテストをしてない……って、そんなに環境用意できるかいっ!!
「クリックするとこのページのActivXコンテンツを……」ってのを回避するために外部JavaScriptも使わなきゃいけないし……だぁぁぁっ、ゲイツぅぅ!!