HTMLからFlashへ変数が渡せない?

HTMLからFlashに変数を渡すには、2通りの方法がある。ひとつはFlashVarsを使用する方法、もうひとつはSWFファイルURL指定時に、クエリーとして変数を付加する方法。

// 後者抜粋
<param name="movie" value="deftrash.swf?hoge=foo" />
<embed src="deftrash.swf?hoge=foo" ... />

前者は FlashPlayer6 以上で、後者はもっと前の世代でもOK。そんなわけで、後者の方法を使用している人も多いはず。ところが、ここで落とし穴。変数の文字列に「#」が含まれていると、Operaでは、「#」以降の文字列を渡すことができない!(FlashVarsの方法では大丈夫っぽい)

どうやらURLエンコーディングしてあげる必要があるみたい。

// JavaScript で対応する場合
<script type="text/javascript">
document.write("<param name=\"movie\" value=\"deftrash.swf?hoge=\" + escape("#foo") + "\" />");
document.write("<embed src=\"deftrash.swf?hoge=" + escape("#foo") + "\" ... />");
</script>

location.hashをFlash側に渡そうとして、コレにすごいハマった。Operaとかスゴイ嫌いだよ。ううう。

このエントリーのトラックバックURL
http://www.deftrash.com/admin/mt4/mt-tb.cgi/302