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);
=======================================
先到这吧 如果有新的经验心得再补充
分享到:
相关推荐
#### 六、注意事项 - 在开发过程中需遵守Adobe AIR的许可协议,不得进行未经授权的复制或分发。 - 本文档提供的信息仅供参考,Adobe Systems Incorporated不对其中的错误或遗漏负责。 - 使用第三方素材时需确保已...
AIR提供了一个统一的开发框架,简化了跨平台应用程序的开发过程。 **二、Adobe AIR安装与更新** 1. **安装Adobe AIR**:用户可以直接从Adobe官方网站下载安装包进行安装。对于开发者而言,可以使用Adobe AIR SDK来...
从中国环境监测总站每小时发布的空气质量监测数据网上自动获取,包括600多个监测点,120个城市。
在标题“Adobe AIR:压缩Zip/创建zip文件”中,我们可以推测这篇博文可能主要讨论如何在Adobe AIR环境中处理压缩文件,特别是创建ZIP文件的方法。 在开发过程中,压缩文件是常见的需求,例如打包资源、传输数据或...
《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 ...
(1)串口接收温度,湿度,烟雾浓度进行数据处理后上传至云端 (2)当温度过高时会进行电话提示(当温度高于设置值,会拨打一次电话 ,如果此时温度持续高于设置值则不会再次拨打电话,如果低于设置值后 再次高于...
7. **OTA更新**:Over-the-Air(OTA)更新是Android系统常见的升级方式,通过无线网络将新版本的系统文件推送到用户设备上。这种方式对服务器和客户端都有一定的技术要求,如分段传输、文件校验等。 8. **权限控制*...
根据提供的文件信息,我们可以推断出这是一本关于如何使用Adobe AIR与Ajax进行开发的指南书籍。本书由Larry Ullman编写,由Peachpit Press出版。以下是对该书籍涉及的关键知识点的概述: ### Adobe AIR简介 Adobe ...
《AIR+Android应用开发实战》是一本专注于跨平台移动应用开发的专业书籍,作者邱彦林在书中详细介绍了如何使用Adobe AIR技术与Android平台相结合,创建功能丰富的移动应用程序。随书附带的代码文件是读者实践和理解...
Python获取中国环境总站 CNEMC 采集的实时空气质量数据 从中国环境总站采集空气质量六...发布结果通常为每小时更新1次,由于数据传输需要一定的时间,发布的数据约有半小时延滞,例如15时的监测数据在15:30左右发布。
《使用HTML和Ajax开发Adobe AIR 1.5》是一本专注于使用HTML和Ajax技术构建Adobe AIR应用程序的教程。Adobe AIR(Adobe Integrated Runtime)是Adobe公司推出的一款跨平台的应用程序运行环境,它允许开发者使用Web...
flash+flex+air移动开发入门经典(4)源码 最后一个了
- **Ajax技术简介**:Ajax(Asynchronous JavaScript and XML)是一种用于创建快速动态网页的技术,可以在不重新加载整个页面的情况下,通过后台加载数据并更新部分页面内容。 - **提升用户体验**:在Adobe AIR应用...
本書全面講解Adobe AIR(Adobe Integrated Runtime)技術和開發實踐。AIR允許利用現有的Web開發技能(包括Flash、Flex、HTML、JavaScript、Ajax)優勢,建立和配置跨平台(或跨作業系統)的桌面RIA(Rich Internet ...
Flash+Flex+Air 移动开发入门经典——适用于Android、iOS、BlackBerry系统
在本教程中,我们将深入探讨如何在小米笔记本Air 13.3英寸的设备上安装Windows 10和macOS(黑苹果)双系统。这个过程对于初次尝试此类操作的小白用户来说可能会有些复杂,但通过细致的步骤指导,我们可以确保你能够...