AIR 會將
childSandboxBridge
和
parentSandboxBridge
屬性加入至任何子框架的
window
物件。這些屬性可以讓您定義橋接,以做為父框架與子框架之間的介面。每個橋接都是單向的:
childSandboxBridge
:
childSandboxBridge
屬性允許子框架向父框架中的內容公開介面。若要公開介面,請將
childSandbox
屬性設定為子框架中的函數或物件,然後,您就能從父框架中的內容存取物件或函數。下列範例會示範在子框架中執行的指令碼如何將包含函數和屬性的物件公開給其父輩:
var interface = {};
interface.calculatePrice = function(){
return .45 + 1.20;
}
interface.storeID = "abc"
window.childSandboxBridge = interface;
如果此子內容是在指定
id
為
"child"
的 iframe 中,您可以透過讀取該 frame 的
childSandboxBridge
屬性,從父內容中存取介面:
var childInterface = document.getElementById("child").childSandboxBridge;
air.trace(childInterface.calculatePrice()); //traces "1.65"
air.trace(childInterface.storeID)); //traces "abc"
parentSandboxBridge
:
parentSandboxBridge
屬性允許父框架向子框架中內容公開介面。若要公開介面,請將子框架的
parentSandbox
屬性設定為父框架中的函數或物件。然後,您就能從子框架中的內容存取物件或函數。下列範例會示範父輩 frame 中執行的指令碼如何將包含 save 函數的物件公開給子系:
var interface = {};
interface.save = function(text){
var saveFile = air.File("app-storage:/save.txt");
//write text to file
}
document.getElementById("child").parentSandboxBridge = interface;
使用此介面,子框架中的內容可以將文字儲存至 save.txt 檔案中。但是,它對檔案系統沒有任何其它存取權限。一般來說,應用程式內容應該盡可能向其它安全執行程序公開限制最多的介面。子系內容可以呼叫 save 函數,如下所示:
var textToSave = "A string.";
window.parentSandboxBridge.save(textToSave);
如果子內容嘗試設定
parentSandboxBridge
物件的屬性,執行階段就會擲出 SecurityError 例外。如果父內容嘗試設定
childSandboxBridge
物件的屬性,執行階段就會擲出 SecurityError 例外。