AIR笔记 使用HTML

AIR笔记 使用HTML
2011年05月17日
  air2.5的webkit
  c++ singleton实现
  flash 2011-02-25 16:25:15 阅读40 评论0 字号:大[b]中[/b]小 订阅
  来自:http://www.ebibi.com/i/experience/2010/0707/263.html
  1. 使用flash.html.HTMLLoader读入HTML内容,
  load()读入页面等资源, loadString()读入一个HTML串
  2. 如果系统上安装了Acrobat Reader 8.1 以上的插件, 则可以用同样的方法加载和呈现PDF了.
  可以用 HTMLLoader.pdfCapability 属性判断PDF特性是否可用, 返回四种值:
  STATUS_OK(可用) 三种ERROR(没安装, 安装版本过旧, 优先使用版本过旧)
  3. 在Flex工程中, 可以使用 来取代HTMLLoader
  指定location属性, 可以使HTML组件自动加载并呈现内容
  HTML组件并不直接支持 loadString()
  但可以通过其 htmlLoader 属性, 获得其包装的HTMLLoader对象, 间接实现
  4. 如果不想缓存内容, 应该在 load() 之前设置 HTMLLoader对象的 cacheResponse = false
  如果不想优先读取本地缓存, 在 load() 之前设置 useCache = false
  5. 如果碰到需要身份验证的站点, AIR默认会弹出 用户名/密码 对话框
  如果想禁止弹出, 设置 authenticate = false, 但这样会导致服务器返回错误
  6. 可以设置 userAgent 属性以实现ua欺骗
  7. 设置 manageCookies = false 可以禁止在本地存储cookie
  8. 如果不想针对每个 HTMLLoader 实例设置上述属性,
  可以用 URLRequestDefaults类的静态方法统一设置
  9. 内容超出范围的情况下, 在 控件中, 使用flex内置的 …Policy 属性即可调节滚动条
  10. 使用as时, 监听HTMLLoader的complete事件, 而后即可获知contentWidth和contentHeight属性
  使用scrollH和scrollV属性可以控制内容向右和向下的移动值
  11. var hl:HTMLLoader = HTMLLoader.createRootWindow([可选的参数]);
  hl.load(…);
  这样将把加载的内容放到一个AIR窗口中, 并且该窗口可以自动添加滚动条
  12. 使用 HTMLHistoryItem 对象来保存浏览历史, 包括以下属性
  url -> 页面的url
  originalUrl -> 初始url(可能的跳转之前)
  title -> 页面的title
  isPost -> 是否包含post数据
  HTMLLoader对象的属性 historyLength 指示了历史项目的数量
  用 getHistoryAt() 返回对应的 HTMLHistoryItem 对象
  也可以使用 HTMLLoader对象的 historyBack(), historyForward(), historyGo() 实现导航
  13. AIR并不仅仅能加载和呈现HTML, 因为HTMLLoader暴露了所加载HTML内容的全部DOM,
  所以可以与其交互, 但需要等待内容加载完
  HTMLLoader对象的window 对应了 HTML内容中js的window对象,
  可以直接读取其属性或调用其方法等
  如果把一个function赋值到一个js方法上, 会替换该方法的动作
  _htmlLoader.window.xxx = function():void { trace(”xxx”); };
  可以用和js类似的方法操作DOM
  _htmlLoader.window.document.getElementById(”p1″).innerTEXT = “xxx”;
  14. 有两种方法可以注册对js方法的监听: 在HTML元素的事件属性上赋值 以及 使用addEventListener()
  比如 _htmlLoader.window.document.getElementById(”p1″).onclick = clickHandler;
  或 _htmlLoader.window.document.getElementById(”p1″).addEventListener(”click”, clickHandler);
  处理函数接受一个类型为 Object 的事件对象, 包含了 target 和 currentTarget属性
  private function clickHandler(evt:Object):void { trace(”click”); }
  15. 可以通过继承 HTMLHost 类来实现对 Window.status Window.focus() 等属性和方法的定义
  并指定到HTMLLoader对象的htmlHost属性上
  16. 在所加载HTML的js中, 可以使用 window.runtime 来调用一切 Flash Player APIs
  比如 window.runtime.trace()
  window.runtime.flash.desktop.NativeApplication.nativeApplication.openedWindows[0]
  如果要在js中调用自定义的类型, 需要将HTML内容加载到same ApplicationDomain
  _htmlLoader.runtimeApplictionDomain = ApplicationDomain.currentDomain;
  17. 所有加载到AIR中的HTML内容都有sandbox限制
  从 application目录或子目录加载的, 为 application sandbox
  从其他地方加载的, 为 noapplication sandbox
  application sandbox 中禁止的操作有:
  1). eval()只能用于字面量和常量
  2). setTimeout()和setInterval()只能调用字面量的方法, 不能执行字符串
  3). innerTEXT和innerHTML中不能包含script
  4). 不能使用 ‘javascript’ 关键字作为URI配置
  5). 不能载入application domain之外的外部js文件
  这些限制尽量屏蔽了恶意的js代码, 保证application domain中的js相对安全的获得包括本地文件操作在内的AIR API
  外部载入的js没有以上限制, 但虽然它可以不受控制的执行eval(), 却是没有访问本地文件系统权限的
  18. 当绝对需要时, 也可以使用 sandbox bridging 技术
  一种跨域脚本访问方法, 在noapplication sandbox中的内容与其在application sandbox中的父文档直接创建沙箱桥接口
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值