Flash 如何抓取目前網頁的網址

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  就都可以抓到目前網址囉~

相關網頁

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈Flash 如何抓取目前網頁的網址〉中有 4 則留言

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料