Flash + HTML(2)
HTML側からFlashに変数を渡す場合、
以前に書いたように、
swfを読み込んでいる部分に&をつけることで簡単に処理できます。
それと似たような処理で、表示しているHTMLのURLから変数を渡してみます。
(javaScriptがメインとなります)
考え方としてはswfのURLに直接変数を書き込む方法と同じで、
HTMLのURLの末尾に変数を付加し、
それをJavaScriptで読み込み、
それをswfに渡す、という方法になります。
具体例。
swfを読み込む側のHTMLに以下のJavaScriptを記述。
var str = location.search;
str = str.substring(1,str.length);
このページへのリンクを以下のように記述。
<a href="xxxx.html?1">Link</a>
これで、読み込み側のHTMLの変数、strに、「1」が入ります。
※location.searchで、URLの?からを取得できます。
この例では、「?1」となります。
なのでそこから1だけを、substringで取り出しています。
あとは、この変数をswfに入れてやるだけです。
これは、swfを読み込んでいる部分をJavaScriptで吐き出すように書いてやり、
swfのURLの後ろに、&=strといれてやるだけです。
・param
document.write('<param name="movie"
value="xxxx.swf?flag='+str+'">\n');
・embed
document.write('<embed src="top.swf?flag='+str+'" quality="high"
bgcolor="#ffffff" width="750" height="214"
align="" type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer">\n');
※swfのURLを読み込むところのみ記述。
どっちも一行です。
これを、FlashVarsを用いて、変数を渡してやることもできます。
document.write("<param name=\"FlashVars\" value=\"flag="+str+"\" />");
・embedは割愛。
さらに、これをswfObjectを使用するとさらに簡単になります。
記述部分に、以下のパラメータを足してやるだけです。
so.addVariable("flag", str);
詳しくはこちら。
FLASH-JP.COM フォーラム - リンクされたURLの引数を変数として受け取る。
参考:
A LOT - JavaScriptで変数受け取りの巻
<< Home