`

AIR+Ajax 开发的一些细小的经验/心得/注意事项(最后更新:10年1月7日)

阅读更多
AIR+Ajax 开发的一些细小的经验/心得/注意事项

(针对 AIR 1.5.2 )

最后更新:10年1月7日

=======================================


一直想写一些关于 AIR+ajax开发的教程, 但是后来细细一想
写这样的教程实在多余 adobe官方提供的文档已经足够了(中英文都有)

开发人员只要具备一定的js功力 同时对AIR有一个准确的认识(不需要深入 至少要知道AIR是什么 以及如何下载和安装AIRSDK)
那么有下面两个地址  就足以掌握AIR+Ajax的开发了

使用 HTML 和 Ajax 开发 Adobe AIR 1.5 应用程序

针对 HTML 开发人员的 Adobe AIR 语言参考


如果有时间和兴趣 也可以去
HTML 和 Ajax 的 Adobe AIR 开发人员中心 逛逛

(以上三个网址都是adobe官方提供)

所以 与其写教程 不如提炼出来一些小的经验/心得/注意事项来的有意义.
对于我来说 写起来容易 同时自己可以做个备忘
对于别人来说 如果遇到类似的问题 可以少走些弯路.
何乐而不为呢.

好 废话先说这些 下面进入正文(对有些人来说 正文同样是废话 呵呵)  注意: 以下针对AIR 1.5.2 for windows


写得很凌乱 如果大家看不懂 就先别看了 以后开发时 遇到问题可以过来瞧一瞧 看看我这篇备忘能不能帮上你什么忙.

=========================================

adobe官方提供的 AIRAliases.js 文件并没有包含所有air的api 的别名
例如这个  : window.runtime.flash.events.MouseEvent;

所以如果要用到它 可以自己手动指定一个 简写的别名
air.MouseEvent  =  window.runtime.flash.events.MouseEvent;

=========================================
标准的HTML text元素 到了AIR里 也不支持 undo/redo 了, 这个很烦

=========================================

某 dom元素 如 一个input框, 调用 dom.focus() 无法让dom获得焦点.
(此为bug, 2.0已修正)


解决方案 , 自己写一个 函数 用来实现这个功能

	setFocus : function(el){
		var CUSTOM_EVENTTYPE='_GTA_FOCUS';
		var SET_FOCUS = function(event){
			event.target.focus();
		};
		var focusEvent = document.createEvent('HTMLEvents');
		focusEvent.initEvent(CUSTOM_EVENTTYPE, false, false);

		el.addEventListener(CUSTOM_EVENTTYPE, SET_FOCUS , false);
		el.dispatchEvent( focusEvent );
		el.removeEventListener(CUSTOM_EVENTTYPE, SET_FOCUS, false);
	}


我就不说这个函数的思路了 让代码说话吧.


=========================================

AIR中的 XmlHttpRequest 请求本地文件 找不到时 报 101错误 而不是404
这个不是绝对
我换个说法吧:
如果大家在使用XHR请求资源时, 报了101错误 也许不是什么复杂的问题, 只是那个资源不存在而已.
(这样说更好吧 呵呵)

=======================================

AIR对 alt + 字母/数字键的处理很特殊, 部分按键会映射成小键盘上的按键

keypress  事件中, 捕获不到alt键的状态
即使你按下了 alt+某一个按键, event.altKey也是false
(此为bug, 2.0已修正)


=======================================

keydown keyup时 event.charCode ==0
keypress 时  event.charCode == event.keyCode

=======================================

keydown keyup keypress  时, event.keyCode 总是一样的
(此为bug, 2.0已修正)

例如 AIR中
  keydown keyup keypress 时 "-键"为189 ".键"为190  "A键"为65

而其他浏览器中 keydown keyup一样,keypress和另两者不一样
例如 其他浏览器中
  keydown keyup 时  "-键"为189 ".键"为190  "A键"为65
  keypress时  "-键"为45 ".键"为46  "A键"为97

=======================================
利用
window.addEventListener('keydown',HotKeyListener,true);

大家可以自己比较容易的实现应用级的全局快捷键.

注意;
1 要使用keydown, 而不是keypress (这个原因说来复杂... 试试就知道了 和我前面说的那些关于键盘事件的内容有关, 而且很多软件都是监听的keydown)
2 最后一个参数建议设置成true  否则快捷键可能会被window的子节点拦截 (如果有此需求 另当别论)

HotKeyListener 指代自己实现的快捷键监听函数.
这个要想实现的好 还有很多细节需要处理 例如 快捷键的注册 反注册 冲突处理等等. 在这里暂不细说.

=======================================
页面加载后 不允许 一些 eval 或 new Function 的执行
(详见 使用 HTML 和 Ajax 开发 Adobe AIR 1.5 应用程序 的第14章 AIR 安全性
这章非常非常重要, 熟悉js的人转过来搞air开发 最大的障碍可能就在这了
)


但是可以灵活的 运用 iframe +  childSandboxBridge/parentSandboxBridge 来绕开这个限制(并不是所有情况都可以绕开)

关于相关的 思路 和方法 以后我有时间 而且有人希望了解的话,我再单独撰文吧


=======================================
"动态同步载入js文件" 在AIR中 没有完美解决方案.
目前网上流行的 以及各大著名ajax框架采用的方法 在AIR中都有问题.
例如

1 创建 <script src="....js" > 节点:
无法做到同步, 无论 defer怎么设置 , 都是异步.

2 使用ajax加载js内容 然后 eval .
由于air 对eval的一些限制 这个方案不可行. 采用我前面说的SandboxBridge方案也不行.

3 使用ajax加载js内容 然后塞入script节点内 作为内嵌script运行 也不行.也无法做到同步加载与执行.
(2.0中 此方法可行)


=======================================

AIR可以很轻松的获得 刚刚插入数据库(SQLite)的记录的主键, 这个特性要好好利用哦.

insertStmt.execute(); 
// get the primary key 
var result = insertStmt.getResult(); 
var primaryKey = result.lastInsertRowID; 


=======================================
AIR的数据库 有同步和异步两种连接,从而实现数据库的同步或异步操作.

但要注意  不要过度的使用异步数据库操作.
当然也不要闲置不用 浪费了如此优秀的特性.

=======================================

window.runtime.air.update.ApplicationUpdater 类的 initialize 方法是异步的.
想要在初始化之后 执行某动作 要使用事件监听的方式 监听 INITIALIZED 事件.

=======================================
10年1月7日 新增:
清空 canvas 时,
使用 canvas.width=canvas.width 性能高于
context.clearRect(0, 0, canvas.width, canvas.height);

=======================================

先到这吧 如果有新的经验心得再补充
4
0
分享到:
评论
1 楼 唯快不破 2009-10-05  
fins,有关于gtgrid的消息吗?

相关推荐

    使用HTML和AJAX开发AIR应用程序中文文档

    #### 六、注意事项 - 在开发过程中需遵守Adobe AIR的许可协议,不得进行未经授权的复制或分发。 - 本文档提供的信息仅供参考,Adobe Systems Incorporated不对其中的错误或遗漏负责。 - 使用第三方素材时需确保已...

    Flash创建AIR

    AIR提供了一个统一的开发框架,简化了跨平台应用程序的开发过程。 **二、Adobe AIR安装与更新** 1. **安装Adobe AIR**:用户可以直接从Adobe官方网站下载安装包进行安装。对于开发者而言,可以使用Adobe AIR SDK来...

    全国空气质量监测数据获取器

    从中国环境监测总站每小时发布的空气质量监测数据网上自动获取,包括600多个监测点,120个城市。

    Adobe AIR:压缩Zip/创建zip文件

    在标题“Adobe AIR:压缩Zip/创建zip文件”中,我们可以推测这篇博文可能主要讨论如何在Adobe AIR环境中处理压缩文件,特别是创建ZIP文件的方法。 在开发过程中,压缩文件是常见的需求,例如打包资源、传输数据或...

    Flash+Flex+Air移动开发入门经典 pdf

    《flash+flex+air移动开发入门经典——适用于android、ios和blackberry》 第1章 flash、flex和air简介 1 1.1 adobe flash 1 1.2 actionscript 3.0 2 1.2.1 ecmascript 2 1.2.2 关键概念 3 1.3 flex框架 11 ...

    合宙AIR800+阿里云+上传数据+订阅数据+打电话+串口接收/发送

    (1)串口接收温度,湿度,烟雾浓度进行数据处理后上传至云端 (2)当温度过高时会进行电话提示(当温度高于设置值,会拨打一次电话 ,如果此时温度持续高于设置值则不会再次拨打电话,如果低于设置值后 再次高于...

    android版本更新完整版

    7. **OTA更新**:Over-the-Air(OTA)更新是Android系统常见的升级方式,通过无线网络将新版本的系统文件推送到用户设备上。这种方式对服务器和客户端都有一定的技术要求,如分段传输、文件校验等。 8. **权限控制*...

    Adobe Air With Ajax Visual Quickpro Guide

    根据提供的文件信息,我们可以推断出这是一本关于如何使用Adobe AIR与Ajax进行开发的指南书籍。本书由Larry Ullman编写,由Peachpit Press出版。以下是对该书籍涉及的关键知识点的概述: ### Adobe AIR简介 Adobe ...

    《AIR+Android应用开发实战》(邱彦林)随书代码

    《AIR+Android应用开发实战》是一本专注于跨平台移动应用开发的专业书籍,作者邱彦林在书中详细介绍了如何使用Adobe AIR技术与Android平台相结合,创建功能丰富的移动应用程序。随书附带的代码文件是读者实践和理解...

    Python获取中国环境总站 CNEMC 采集的实时空气质量数据

    Python获取中国环境总站 CNEMC 采集的实时空气质量数据 从中国环境总站采集空气质量六...发布结果通常为每小时更新1次,由于数据传输需要一定的时间,发布的数据约有半小时延滞,例如15时的监测数据在15:30左右发布。

    使用HTML和Ajax开发Adobe.AIR.1.5.rar

    《使用HTML和Ajax开发Adobe AIR 1.5》是一本专注于使用HTML和Ajax技术构建Adobe AIR应用程序的教程。Adobe AIR(Adobe Integrated Runtime)是Adobe公司推出的一款跨平台的应用程序运行环境,它允许开发者使用Web...

    flash+flex+air移动开发入门经典(4)源码

    flash+flex+air移动开发入门经典(4)源码 最后一个了

    AIR Applications with HTML and Ajax

    - **Ajax技术简介**:Ajax(Asynchronous JavaScript and XML)是一种用于创建快速动态网页的技术,可以在不重新加载整个页面的情况下,通过后台加载数据并更新部分页面内容。 - **提升用户体验**:在Adobe AIR应用...

    ADOBE AIR完整入門與開發實錄-使用Flex/Flash/Ajax開發AIR應用

    本書全面講解Adobe AIR(Adobe Integrated Runtime)技術和開發實踐。AIR允許利用現有的Web開發技能(包括Flash、Flex、HTML、JavaScript、Ajax)優勢,建立和配置跨平台(或跨作業系統)的桌面RIA(Rich Internet ...

    Flash+Flex+Air 移动开发入门经典——适用于Android、iOS、BlackBerry系统

    Flash+Flex+Air 移动开发入门经典——适用于Android、iOS、BlackBerry系统

    小白教程:小米笔记本Air 13.3 Win10+黑苹果macOS

    在本教程中,我们将深入探讨如何在小米笔记本Air 13.3英寸的设备上安装Windows 10和macOS(黑苹果)双系统。这个过程对于初次尝试此类操作的小白用户来说可能会有些复杂,但通过细致的步骤指导,我们可以确保你能够...

Global site tag (gtag.js) - Google Analytics