SWFObject の addVariable を使って何らかのパラメータを渡す際には、その値を URL エンコードした方がよい。 値に & などのスペシャルキャラクタを含むと正しく渡らない可能性があるからだ。
例えば、
so.addVariable("hoge", "http://example.com/?a=100&b=200");
このコードは、SWFObject によって、以下の param タグに変換される。
<param name="FlashVars" value="hoge=http://example.com/?a=100&b=200" />
FlashVars は、名前と値のペアの連結に & を使うため、Flash 内部では
hoge = http://example.com/?a=100; b = 200;
と解釈されてしまう。 従って、値を escape() で URL エンコードする必要がある。
//JavaScript so.addVariable("hoge", escape("http://example.com/?a=100&b=200")); //ActionScript this.hoge = unescape(this.hoge); trace(this.hoge); //->http://example.com/?a=100&b=200