外部 API 需求與優點

Flash Player 9 以及更新的版本,Adobe AIR 1.0 以及更新的版本

外部 API 屬於 ActionScript 的一部分,可提供一項機制讓 ActionScript 與在「外部應用程式」中執行的程式碼進行通訊,這個外部應用程式也就是 Flash Player 的容器 (通常是網頁瀏覽器或獨立的放映檔應用程式)。在 ActionScript 3.0 中,是由 ExternalInterface 類別提供外部 API 的功能;而在 Flash Player 8 之前的 Flash Player 版本中,則是由 fscommand() 動作與容器應用程式進行通訊。ExternalInterface 類別取代了 fscommand()

備註: 如果您需要使用舊版的 fscommand() 函數 (例如,為了維持與早期應用程式的相容性,或是與第三方 SWF 容器應用程式或獨立的 Flash Player 維持互動),您仍然可以在 flash.system 套件中找到這個套件等級函數。

ExternalInterface 類別是一個子系統,可讓您輕鬆地在 ActionScript 和 Flash Player 與 HTML 頁面中的 JavaScript 之間進行通訊。

ExternalInterface 類別僅在下列情況下才能使用:

  • Windows 的 Internet Explorer 的所有支援版本 (5.0 和更新版本)

  • 所有支援 NPRuntime 介面的瀏覽器,目前這些瀏覽器包含 Firefox 1.0 和更新版本、Mozilla 1.7.5 和更新版本、Netscape 8.0 和更新版本,以及 Safari 1.3 和更新版本。

  • SWF 內嵌在由 HTMLLoader 控制項顯示的 HTML 頁面時的 AIR 應用程式。

在其它情況下 (例如在獨立的播放程式中執行時), ExternalInterface.available 屬性就會傳回 false

您可以從 ActionScript 呼叫 HTML 網頁上的 JavaScript 函數。和 fscommand() 相比,外部 API 可提供下列更完備的功能:

  • 您可以使用任何 JavaScript 函數,而不只是使用能與 fscommand() 函數搭配使用的函數。

  • 您可以傳遞任意名稱且任意數目的引數,不必受限於只能傳遞一個命令和單一字串引數。和 fscommand() 相較之下,外部 API 更具彈性。

  • 您可以傳遞不同的資料類型 (例如 Boolean、Number 和 String),而不受限於只能傳遞 String 類型的參數。

  • 您可以接收某個呼叫的值,並讓這個值立即回傳到 ActionScript (當您進行該呼叫時)。

重要事項: 如果 HTML 網頁中指定的 Flash Player 實體名稱 ( object 標籤的 id 特質) 含有連字符號 ( - ) 或其它已在 JavaScript 中定義為運算子的字元 (例如 + * / \ . 等字元),當您在 Internet Explorer 中檢視容器網頁時,使用 ActionScript 進行的 ExternalInterface 呼叫將無法運作。此外,如果定義 Flash Player 實體的 HTML 標籤 ( object embed 標籤) 是在 HTML form 標籤的巢狀架構內,使用 ActionScript 進行的 ExternalInterface 呼叫也無法運作。