2013-04-28 104 views
0

我正在加載一個包含的HTML文件到我的AIR應用程序的Flex HTML組件中,並且該HTML文件將包含對遠程內容。 AIR中的默認設置是不允許的 - 從應用程序本地加載內容,然後禁用遠程內容。Adob​​e AIR HTML組件,加載本地應用程序的HTML,但允許遠程(http)腳本和內容

我在他們的文檔中看到它看起來可以改變這一點,但我找不到(在挖掘完畢後)如何做到這一點。

從他們的文檔:

在一個頁面中的內容的來源決定了它 託運沙箱。只有從應用程序目錄加載的內容( 安裝目錄由app:URL方案引用)被放置在 應用程序沙箱中。從文件系統加載的內容放置在本地文件系統或本地信任沙箱中,其中 允許訪問本地文件系統上的內容,並且與本地文件系統上的內容交互,但不允許遠程內容與 上的內容交互。從網絡加載的內容位於與其原始域相對應的 遠程沙箱中。

應用程序沙箱中的HTML頁面無法使用腳本標記從 從應用程序目錄之外加載JavaScript文件。 爲了讓應用程序中的頁面從應用程序目錄的 以外加載腳本,該頁面必須映射到非應用程序沙箱的 。

這很好,但我該如何做到這一點?

尋找加載本地文件(應用程序:/google-maps/capture.html),但允許遠程內容(),使谷歌地圖工作。

任何想法?

回答

0

回答了我自己的問題。

http://livedocs.adobe.com/flex/3/html/help.html?content=ProgrammingHTMLAndJavaScript_11.html

一節「應用程序內容加載到非應用程序沙箱」回答了這個問題。

解決辦法:

我需要兩個HTML文件,加載到彎曲的一個包含無非一個iframe,試圖加載,我想顯示的實際文件的更多。

capture2.html(裝入HTML組件)

<iframe width="100%" height="100%" 
    src="capture.html" 
    sandboxRoot="http://google.com/" 
    documentRoot="app:/google-map-capture/"> 
    </iframe> 

然後,我真正想要所示(capture.html)在文件中:

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Simple Map</title> 
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> 
    <meta charset="utf-8"> 
    <style> 
     html, body, #map-canvas { 
     margin: 0; 
     padding: 0; 
     height: 100%; 
     } 
    </style> 
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script> 
    <script> 
var map; 
function initialize() { 
    var mapOptions = { 
    zoom: 8, 
    center: new google.maps.LatLng(-34.397, 150.644), 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    map = new google.maps.Map(document.getElementById('map-canvas'), 
     mapOptions); 
} 

google.maps.event.addDomListener(window, 'load', initialize); 

    </script> 
    </head> 
    <body> 
    <div id="map-canvas"></div> 
    </body> 
</html> 

完美。