這個題目好難下. 主要是要說明, 在 Flash 中的 swf 程式內, 如何取得該 swf 嵌在哪個網頁(url), 以及被嵌入使用的 url (註1). 以下介紹的是在 AS3 下的作法.
(註1)的部分是指 <embed src=”XXXXXXX” /> 的其中 “XXXXXXX” 的部分.
程式碼並不複雜, 主要是利用了 ExternalInterface.call(“window.location.href.toString”); 來取得該 swf 嵌在哪個網頁(url).
而被嵌入的 url 則是利用了 loaderInfo 中的 loaderURL 取得, 程式碼如下:
import flash.external.*; var strUrl:String; var strQueryString:String; strUrl = ExternalInterface.call("window.location.href.toString"); strQueryString = ""; var params:Array = strUrl.split('?'); if(params.length>1) { strQueryString = params[1]; } var strEQueryString:String; strEQueryString =""; for (var s1:String in this.loaderInfo.parameters) { strEQueryString += s1 + "=" + this.loaderInfo.parameters[s1] + ";"; } output_txt.text = "Result:\n"+ "location="+strUrl+"\n"+"querystring="+strQueryString+"\n"+ "embed-url="+this.loaderInfo.loaderURL+"\n"+ "embed-querystring="+strEQueryString+"\n";
取得第一個部分, 是取出整個 url 後, 再自行解析 (parse) 出 querystring 內容. 而在第二個部分, 因為是使用 loaderInfo, 所以 querystring 的參數可以直接使用 parameters 來取得.
sample link : http://sample.diary.tw/21/sample.htm?q1=123&q2=456&q3=789
其中 embed 的內容為: location.swf?eq1=abc&eq2=def 所以出現的結果如下:
參考資料:
http://ccutmis2.spaces.live.com/Blog/cns!F858878FA572B430!1016.entry
http://mc-computing.com/Languages/ActionScript/Getting_html_data.html