Flash 要抓取目前此頁面的網址, 要如何做?
註: Flash + HTML 如何寫才能抓到目前頁面網址.
Flash 抓取目前頁面網址 的 寫法
Flash 要抓取目前頁面的網址, 需要靠 JavaScript 抓取才行, 所以寫法如下述:
import flash.external.ExternalInterface; var pageURL = ExternalInterface.call('window.location.href.toString'); // 註: pageURL 就是現在的頁面網址
完整範例
on (release) { import flash.external.ExternalInterface; var pageURL = ExternalInterface.call('window.location.href.toString'); getURL("http://example.com/?current_page_url=" + escape(pageURL), "_blank"); }
Flash 抓取目前網址 的 SWF 放入網頁
把產生出來的 swf 去試跑看看, HTML 如下述:
<embed src="http://example.com/test.swf" width="100" height="100"></embed>
發現只有 Firefox 可以抓到目前頁面的網址, Chrome 和 IE 都抓不到.
於是對 embed 加點工, 改成下述:
<embed allowscriptaccess="always" src="http://example.com/test.swf" width="100" height="100"></embed>
發現 Firefox 和 Chrome 可以抓到目前頁面的網址, 但是 IE 都還是抓不到.
於是研究 OBJECT 與 EMBED 的寫法差別, 詳可見: Flash / HTML Object 標籤的 classid 如何寫?
要讓 IE 抓到目前頁面網址, 需要用 OBJECT + Param "allowScriptAccess always" + id (id 可以隨意指定一個唯一值).
總結
IE 需要
- <object id="random123"></object>
- <param name="allowScriptAccess" value="always">
Firefox、Chrome 需要
- <embed allowscriptaccess="always" src="..."></embed>
完整 嵌入 Flash 的 HTML 範例如下:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100" height="100" id="example01"> <param name="movie" value="http://example.com/test.swf"/> <param name="allowScriptAccess" value="always"> <embed allowscriptaccess="always" src="http://example.com/test.swf" width="100" height="100"></embed> </object>
註: 上述為最精簡的寫法, 需要 codebase 或其它參數, 請在自行補上.
以上 Flash + HTML 搭配起來, 在 IE、Chrome、FireFox 就都可以抓到目前網址囉~