Adobe AIR 2.5 中的HTML, HTML5, CSS 和JavaScript 新特性 下
原文:What's new about HTML, HTML5, CSS, and JavaScript in AIR 2.5?
不支持的WebKit 特性
AIR 2.5 不支持Safari 4.0.3 的WebKit版本包含的一些HTML,CSS 和JavaScript功能。
下面列出了这些功能,以及在AIR 中建议的解决方案。
音频/视频HTML5的标签
HTML5万众期待的功能之一是用<audio>和<video>标签来播放媒体内容。这些标签也可以通过JavaScript API来实现。然而,该规范还没有最后定稿和支持的格式标准。此外,支持这些标签的浏览器的编解码器各不相同。
<audio>和<video>标签最常用的场景是当系统不支持Flash Player时用来代替Flash player 展现媒体资源。然而,AIR 有自己的Flash Player版本。对于基于Flash的定制的视频/音频播放器Adobe支持两种方式来播放视频。
l FAVideo (Flash-Ajax 视频组件):在Adobe Open Source网站上可以找到。这是一个基于Flex的视频播放器,被包装在AJAX容器中。
l AIR.Video对象: 属于rutime 的基本类,用来支持视频。它可以添加到stage中,不论其周围的html 内容如何变化,其位置必须明确设置。
不支持的CSS功能
下面的CSS特性,AIR 2.5均不支持。
1) -WebKit-background-clip:text 和 –WebKit-background-mask-clip:text
WebKit的推出两个新的CSS声明来控制的背景和Mask滤镜的行为,分别是-WebKit-background-clip和-WebKit-background-mask-clip.在WebKit的Safari版本中,两个声明都允许使用text,content,border和padding属性。然而,CAIRo库在滤镜操作中不支持使用文本作为滤镜,因此 AIR 2.5目前仅支持content,border和padding属性。这个功能计划在未来的版本中支持。
2) 样式化html 控件
虽然AIR 对CSS属性有丰富支持,但是当使用纯css样式(不使用JavaScript做元素替换)来修饰html 控件时有一些问题.概括地说,这些限制影响下列控件:
<select> (下拉框):更改扩展列表的背景色不起作用,也不会改变下拉框中每个条目的字体和颜色。
<input type=”checkbox” />和<input type=”radio”>: 大多数的CSS属性都不能改变这些控件的外观。但是,这种行为与Safari中的行为一致。
3) 媒体查询:
2009年9月,媒体CSS3中的查询功能,是W3C推荐的候选。媒体查询是对媒体类型功能的增强。查询可以包括(但不限于),如宽度,高度和方向属性。媒体查询能在不更改html内容本身的前提下改变文档的外观。
AIR 2.5不支持媒体查询。
4) SVG
SVG近来得到了越来越多的关注。当前WebKit版本支持,但是AIR不支持。
不支持该特性的主要原因是考虑AIR runtime 的大小(加入它会增加百分之十五至二十运行时的大小)。最初,主要痛点是AIR runtime的大小,与本地操作系统和API集成,支持<canvas>标签,支持新的CSS属性和JavaScript性能。所有这些优先事项与具有兴趣降低趋势的SVG图形功能相比,导致当前的AIR runtime 不支持SVG。
然而,基于HTML5 canvas 的富JavaScript应用的重新兴起以及快速发展的JavaScript引擎又增加了对矢量图形画图的需求数量。因此,可能在AIR下一版本中考虑支持SVG。
5) Web sockets
WebSockets协议允许Web应用程序能够处理与服务器进程的直接双向通信。该协议的主要目的是用WebSockets消除异步网络I/O中过度使用XHR,并允许用web应用作为客户端建立更丰富,更复杂的网络通信。
然而,在AIR 2.5中包含的网络API能够构建比Web sockets更灵活的使用方案。新的网络API支持UDP套接字和安全的TCP连接,以及和HTTP,HTTPS相关的很多的协议(包括RTMP和RTMFP)。
6) Web workers
Web Workers为WEB前端网页上的脚本提供了一种能在后台进程中运行的方法。可以通过消息传递的机制与父页面进行通信,而不需要访问父页面或者DOM对象。
目前AIR 不支持此功能,Adobe正在考虑该功能能够基于AIR API。
7) 客户端数据库
AIR 在第一次版本发布时就支持创建和使用SQLite来存储客户端数据,AIR 1.5中增加了对事务的支持,而AIR 2强化了事务保存点。
HTML5支持一个客户端的轻量级的关系数据库,并且公布了 类-SQL 的API用于数据存取。然而,目前的实现有限制,有些用户代理限制了在客户端数据库中存储的数据数量以限制或防止拒绝服务攻击。
目前,HTML5的客户端数据库的API被禁用,因为AIR对于原生数据库的支持已经超出了HTML5提供的功能集。
8) 离线缓存
HTML5中另一个与客户端存储数据相关的功能是应用程序缓存。使用应用程序缓存,应用程序可以指定哪些资源应该被缓存在客户端,那些资源访问始终从网络,以便在用户没有连接的情况下也能与Web应用程序和文件交互。
默认情况下AIR应用程序的所有的文件和资源驻留在用户的本地硬盘。然而,需要网络连接的应用程序可以使用networkChange事件和ServiceMonitor类来确定网络服务是否可用。当应用程序离线运行时,可以通过flash.data*类使用本地文件系统或者数据库内缓存的资源。
9) 窗口消息
HTML5支持对窗口对象调用PostMessage()方法。这使得任何一个窗口可以广播文本消息和任何其他窗口订阅这些消息,从而达到页面之间的安全跨域通信。
当前AIR不支持这个功能,但AIR提供了跨域通信的安全机制。
10) 其他HTML差异
传统上,可以通过调用document.print()函数实现HTML的打印。然而调用这个函数后,Web应用程序开发人员无法控制打印的实际效果(包括但不限于是否进行彩色打印,纸张尺寸规格,份数,等等)。一些对整体样式的控制可以通过CSS媒体类型实现,但一切仍然是由浏览器和用户设置决定的。
在AIR 2.5中,document.print()函数是被禁用的,其使用PrintJob来控制打印过程。使用PrintJob API允许对可视化的,动态的,或者是off-screen的内容渲染,而且能弹出系统打印对话框,并读取用户的打印机设置包括页面宽度,高度,方向和颜色。
11) 符合标准
最新的Adobe AIR在ACID3 compliance测试中获得91/100 的分数。Safari的分数是100/100造成评分差别的主要原因是上文提到的各点。主要是缺乏对SVG的支持(丢掉6分),媒体查询,data:URLs 和 安全限制。最后一分,是因为AIR不支持浏览器默认的保存历史的功能,因为Adobe AIR不是浏览器。
AIR 2.5功能一览
表2和3 总结了Adobe AIR与Safari 4.0.3 相对应的特征集
CSS 特性 | AIR 2.5 |
CSS3 –WebKit 选择器 | 支持,除文本裁剪 |
Web 字体(@font-face) | 支持 |
Transforms 2D | 支持 |
Transforms 3D | 不支持 |
Transitions | 支持 |
Animations | 支持 |
Reflections | 支持 |
滤镜 | 支持 |
样式化滚动条 | 支持 |
Gradients | 支持 |
Zoom | 支持 |
原生 CSS 查询选择器 | 支持 |
CSS 媒体设备查询 | 不支持 |
表2 AIR 2支持的CSS 特性
HTML 5 特征 | AIR 2.5 |
快速JavaScript 引擎 | 支持 WebKit 的 Squirrelfish Extreme JavaScript 引擎 |
Canvas | 支持 |
SVG | 不支持 |
HTML5 段标签(header,nav,article等) | 支持 |
Video/Audio 标签 | 不支持 |
Web workers | 不支持 |
客户端数据库 | 不支持, AIR 有自己的客户端数据库,并且公布了API |
离线检测和缓存 | AIR 为离线设计并且提供了API来检测网络状态的变化 |
跨域的XMLHttpRequest请求 | 不支持,但是应用程序沙箱的XHR可以访问任何域 |
跨页面的消息处理 | 不支持。PostMessage()在AIR 中不支持 |
Web 存储 | 不支持,AIR支持访问文件系统,共享的Flash 对象,加密的本地存储和本地SQLite 数据库 |
Web sockets | 不支持,AIR 有自己的Socket API |
Server-sent Dom 事件 | 不支持 |
Geolocation | 不支持 |
拖拽支持 | 支持,AIR 有自己的拖拽API来支持更深入得桌面操作 |
Forms | 不支持 |
历史状态 返回 按钮 | HTMLLoader 提供自定义的历史堆栈 |
Widgets | AIR 的设计类似Widgets定义 |
表3 AIR 2 中支持的HTML5 功能
本文概括了AIR 2.5中HTML部分的相关特性。由于该HTML引擎基于Safari 4.0.3中的WebKit,因此它们在HTML/JavaScript和CSS渲染方面有很多共同的特性。那些WebKit/Safari拥有而AIR没有的功能,通常在AIR中都能找到可用的解决方案,而且AIR能够提供更深入更灵活的API,比如本地存储、网络和桌面交互。性能方面也有了很大的提高,几乎接近并且有时能和Safari相一致。