javascript - 在 Adob​​e Air 中使用函数

标签 javascript air

您好,我刚开始玩 Adob​​e Air。我将它与一个名为 Angular 的 javascript 库一起使用。

但是,库中有这一行会触发 Adob​​e Air 的沙箱:

fn = Function('s', code);

在 Adob​​e Air 支持页面上有这样一句话:

对 new Function(param, body) 的调用可以替换为内联函数声明,或者仅在处理页面加载事件之前使用。

请您解释一下内联函数声明是什么意思,以及通常如何使用它来达到相同的效果?

谢谢

最佳答案

使用 eval 和其他受阻方法的 JavaScript 框架可以在 Adob​​e Air 中运行,但不能在应用程序沙箱中运行。

有关详细信息,请参阅此文档,但基本上您可以通过将使用该框架的页面加载到辅助框架中来使其工作。 Air 中的顶层框架始终被视为应用程序沙箱,而任何其他框架都在非应用程序模式下运行,因此允许访问所有被阻止的 javascript 方法。

http://help.adobe.com/en_US/air/html/dev/air_htmldevguide.pdf

搜索“配置基于 HTML 的应用程序的概述”部分

这是我用来解决这个问题的框架集示例

<body>

    <iframe src="/blank.html" width="100%" height="0" scrolling="no" id="top" ></iframe>
    <iframe src="http://www.example.com/air/home.html"  documentRoot="app:/" sandboxRoot="http://www.example.com/air" allowCrossDomainXHR="true" width="100%" height="720" scrolling="no" id="bottom">
    </iframe>

</body>

神奇之处在于 documentRoot 和 sandboxRoot 属性。设置为 documentRoot 的任何内容都会替换 sandboxRoot 中使用的域。请注意,因此 sandboxRoot 不需要是有效路径。

在这种情况下,顶部框架从应用程序加载一个名为 blank.html 的文件到应用程序沙箱中,因此该文件可以调用文件系统功能等。应用程序沙箱有权执行这些操作。

第二个框架将从应用程序目录加载“home.html”,但它会将其加载到非应用程序沙箱中,它可以包含几乎所有将在 Safari 4 中运行的 JavaScript 框架(假设您使用的是AIR 运行时的最新版本)。但是,此框架无法调用安全的 AIR 函数,例如文件系统访问。

如果你想从第二个框架调用文件系统功能和其他安全方法,你需要创建一个沙箱桥,这在我上面提到的文档中有介绍。

希望这对您有所帮助。

关于javascript - 在 Adob​​e Air 中使用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6557809/

相关文章:

javascript - AngularJS:尝试设置在 ng-options 和输出值中选择的内容,而不是整个对象

javascript - ReactJS 无法识别的 token 导入

javascript - Adobe Air 可以做到这一点吗?

ios - 使用 AIR for Mobile (AS3) 更改顶部栏背景颜色 iOS

javascript - 从纬度/经度坐标获取一个单词

javascript - 使用 JavaScript 获取所有输入对象的列表,无需访问表单对象

javascript - ./app/main.js 中的错误模块构建失败 : SyntaxError: Unexpected token (10:18)

apache-flex - 如何判断实例是否在 ActionScript 3.0 中实现了接口(interface)

android - adobe air android 项目 xml 更改自动

javascript - 为什么 jQuery UI 布局在 Adob​​e AIR 中运行得这么慢?