现在的位置: 首页 > 综合 > 正文

HTML 和 JavaScript 编程

2013年10月20日 ⁄ 综合 ⁄ 共 2227字 ⁄ 字号 评论关闭

关于 HTMLLoader 类



Adobe AIR 的 HTMLLoader 类定义可在 AIR 应用程序中显示 HTML 内容的显示对象。基于 SWF 的应用程序可以向现有窗口中添加一个 HTMLLoader 控件,也可以使用HTMLLoader.createRootWindow() 创建 HTML 窗口,该窗口会自动包含
HTMLLoader 对象。可以通过 JavaScript window.htmlLoader 属性从加载的 HTML 页内部访问 HTMLLoader 对象。

从 URL 加载 HTML 内容

以下代码将 URL 加载到 HTMLLoader 对象,并将该对象设置为 Sprite 对象的子对象:

var container:Sprite; 
var html:HTMLLoader = new HTMLLoader; 
html.width = 400; 
html.height = 600; 
var urlReq:URLRequest = new URLRequest("http://www.adobe.com/"); 
html.load(urlReq); 
container.addChild(html);

HTMLLoader 对象的 width 和 height 属性默认情况下均设置为
0。向舞台添加 HTMLLoader 对象时需要设置这些尺寸。HTMLLoader 在加载页面时会调度多个事件。可以使用这些事件来确定何时与加载的页面进行交互是安全的。处理与
HTML 相关的事件
中对这些事件进行了介绍。

注: 在 Flex 框架中,只有 UIComponent 类的扩展类才可以作为 Flex 容器组件的子组件进行添加。因此,无法将 HTMLLoader 作为 Flex 容器组件的子组件直接进行添加;但是可以通过以下方式添加:使用 Flex
mx:HTML 控件;构建一个自定义类对 UIComponent 进行扩展,并将 HTMLLoader 作为 UIComponent 的子组件包含在其中;将 HTMLLoader 作为 UIComponent 的子组件进行添加,然后将 UIComponent 添加到 Flex 容器中。有关详细信息,请参阅使用
Flex AIR 组件

您也可以使用 TextField 类来呈现 HTML 文本,但该类的功能受到限制。Adobe® Flash® Player 的 TextField 类支持 HTML 标记的子集,但是由于大小限制,该类的功能受到限制。(Flash Player 不支持 Adobe AIR 中包含的 HTMLLoader 类。)

从字符串加载 HTML 内容

HTMLLoader 对象的 loadString() 方法可以将 HTML 内容字符串加载到 HTMLLoader 对象中:

var html:HTMLLoader = new HTMLLoader(); 
var htmlStr:String = "<html><body>Hello <b>world</b>.</body></html>"; 
html.loadString(htmlStr);

通过 loadString() 方法加载的内容将会放在应用程序安全沙箱中,能够完全访问 AIR API。

在 AIR 应用程序中使用 HTML 的重要安全规则

随 AIR 应用程序一起安装的文件能够访问 AIR API。出于安全方面的考虑,来自其它源的内容不能访问 AIR API。例如,此限制将阻止远程域(例如 http://example.com)中的内容读取用户桌面目录中的内容(也可能是更严重的情况)。

由于存在可通过调用 eval() 函数(及相关 API)来利用的安全漏洞,因此,默认情况下限制使用这些方法。但是,某些 Ajax 框架会调用 eval() 函数和相关
API。

为确保结构内容在 AIR 应用程序中能够正常工作,必须考虑对来自不同源的内容制订相应的安全限制规则。来自不同源的内容按不同的安全等级放置在沙箱(请参阅沙箱)中。默认情况下,随应用程序一起安装的内容安装在称为应用程序 的沙箱中,这将授予该内容访问
AIR API 的权限。应用程序沙箱通常是最安全的沙箱,设计了一些限制,可阻止不受信任代码的执行。

运行时允许将随应用程序一起安装的内容加载到应用程序沙箱之外的沙箱中。非应用程序沙箱中的内容在类似于典型 Web 浏览器的安全环境中运行。例如,非应用程序沙箱中的代码可以使用eval() 和相关方法(但不允许该代码访问 AIR API)。运行时包含有相关方法,可以让不同沙箱中的内容安全地进行通信(例如,不将
AIR API 公开给非应用程序内容)。有关详细信息,请参阅跨脚本访问不同安全沙箱中的内容

如果出于安全方面的考虑,限制在沙箱中使用所调用的代码,则运行时将发出 JavaScript 错误:“Adobe AIR runtime security violation for JavaScript code in the application security sandbox”(应用程序安全沙箱中存在针对 JavaScript 代码的 Adobe AIR 运行时安全侵犯)。

为了避免此错误,请按照下一部分避免与安全相关的
JavaScript 错误
中介绍的代码编写方法进行操作。

有关详细信息,请参阅 HTML
安全性

原文地址(http://help.adobe.com/zh_CN/AIR/1.1/devappsflex/WS5b3ccc516d4fbf351e63e3d118666ade46-7ed8.html)

抱歉!评论已关闭.