ExternalInterface
是 ActionScript 3.0 提供的一種機制,允許 SWF 文件與包含它的 HTML 頁面進行通信。這種通信是通過 JavaScript 接口實現的,因此它實際上并不直接實現跨域通信,而是利用了瀏覽器允許跨域訪問的某些特性。以下是如何使用 ExternalInterface
實現 SWF 與 HTML 之間的通信的基本步驟:
使用 ExternalInterface.available
檢查瀏覽器是否支持 ExternalInterface
。如果支持,就可以定義一個 JavaScript 可調用的方法。
if (ExternalInterface.available) {
ExternalInterface.addCallback("myJavaScriptFunction", myActionScriptFunction);
}
function myActionScriptFunction():void {
// 這里是你想在 JavaScript 中執行的操作
}
在 HTML 頁面中,你需要定義一個與 ActionScript 中定義的方法名稱相匹配的 JavaScript 函數。
<script type="text/javascript">
function myJavaScriptFunction() {
// 這里是你想在 ActionScript 中執行的操作
// 例如,你可以通過 document.getElementById 獲取 HTML 元素并與之交互
}
</script>
在 ActionScript 中,你可以通過調用 ExternalInterface.call()
方法來觸發 JavaScript 中的函數。
if (ExternalInterface.available) {
ExternalInterface.call("myJavaScriptFunction");
}
需要注意的是,出于安全考慮,瀏覽器通常只允許來自相同源的腳本訪問 ExternalInterface
。如果你嘗試從不同的源訪問 ExternalInterface
,瀏覽器可能會阻止這種通信。為了解決這個問題,你可以使用跨域資源共享(CORS)策略,或者在本地設置一個簡單的代理服務器來轉發請求。
另外,雖然 ExternalInterface
提供了一種機制來允許 SWF 與 HTML 之間進行通信,但它并不直接支持跨域通信??缬蛲ㄐ磐ǔI婕暗礁鼜碗s的設置,例如配置服務器以允許跨域請求,或使用特定的技術(如 WebSockets 或 postMessage)來實現跨域通信。