0

我希望将包含的 html 文件加载到我的 AIR 应用程序中的 Flex HTML 组件中,并且该 html 文件将包含对远程内容的引用。AIR 中的默认设置是不允许这样做 - 从应用程序本地加载内容,然后禁用允许的远程内容。

我在他们的文档中看到它看起来可以改变这一点,但我找不到(在全部挖掘之后)如何做到这一点。

从他们的文档中:

页面中内容的来源决定了它被委托到的沙箱。只有从应用程序目录(应用程序引用的安装目录:URL 方案)加载的内容才会放在应用程序沙箱中。从文件系统加载的内容被放置在 local-with-filesystem 或 local-trusted 沙箱中,它允许访问和交互本地文件系统上的内容,但不允许访问远程内容。从网络加载的内容被放置在与其源域相对应的远程沙箱中。

应用程序沙箱中的 HTML 页面不能使用 script 标签从应用程序目录之外加载 JavaScript 文件。为了让应用程序中的页面从应用程序目录之外加载脚本,该页面必须映射到非应用程序沙箱。

这很棒,但我该如何实现呢?

希望加载本地文件 (app:/google-maps/capture.html) 但允许远程内容 () 以便谷歌地图工作。

有任何想法吗?

4

1 回答 1

0

回答了我自己的问题。

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

“将应用程序内容加载到非应用程序沙箱”部分回答了它。

解决方案:

我需要两个 html 文件,一个加载到 flex 中的文件只包含一个 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>

完美运行。

于 2013-04-28T22:59:10.733 回答