您当前的位置:五五电子网电子知识单片机-工控设备源码-程序基于XML (HTML)描述构造出可以离线应用的程序 正文
基于XML (HTML)描述构造出可以离线应用的程序

基于XML (HTML)描述构造出可以离线应用的程序

点击数:7958 次   录入时间:03-04 11:58:09   整理:http://www.55dianzi.com   源码-程序

    ●对话期存储(sessionStorage)。

    对话期存储与哪moldes非常相似,但是它也有一些特有的优点。它有非常大的存储能力(可以达到MB,依据在浏览器上的实现,取代cookies的4l ),它不需要通过每个哪PACket来传输,而且它在不同的情况下都非常有效率。对话期存储对象是键/值对(值都是字符串型),它只能通过源端获得而且只能在窗口创建时获得。HTML5草案举了一个例子。该例子说有一位顾客同时开了两个窗口,都是同一个网站地址,在每一个窗口上买一张飞机票,买的动作在同一时刻进行。如果web应用采用HTTP cookies来追踪这个顾客买了哪张票,在一个窗口买的行为结果可能会泄露到另一个窗口中。使用对话期存储就不会发生这种情况。和cookies不同的是,你不需要定义一个存储对象的持续时间,当顾客关闭窗口时它所创建的对话期存储对象将会消失,或是web应用删除它的时候。你可以像这样定义一个对话期存储对象:session—Storage.foo=‘‘bar”。

    sessionStorage最大的用途用于保存一些临时的数据防止用户意外刷新页面,但是,在浏览器意外关闭并恢复页面时,sessionStorage中存储的信息将会丢失。

    Firefox默认允许一个域名存储5120kB的数据。

    注:firefox的sessionStorage特性必须要在服务器上发布才有效。

    ●局部存储(1ocal storage)。

    为了在客户机上存储持久数据,自从新的工作组草案于2008年6月10日官方正式介绍本地存储后,HTML5已经使用全局存储。

    全局存储允许一个web应用在客户机上存储数据,该数据能被创建该存储对象以外的其他域所存储。

    根据相关规范,你可以定义一个被任何域识别的全局存储对象。(globalStorage[”].foo=“bar”;)来自特定的顶级域(globalStorage[‘com’].foo=“bar”;),然后依次往下一个域(globalStorage[‘example.com’].foo=“bar”;?)。所有域在相等或更低级别上定义的一个全局存储对象可以互相访问它们的存储数据。这些都是规范上所说的。作为普通的浏览器开发商采用一些细小的差别(这是出于丰厚的利润的原因)。Firefox2.0&3.0根本不允许公共的数据存储或者是使用TLD(toplevELDomain)。Firefox3.0甚至阻止子域对较高级别域上数据的存储。你只能从完全相同的域中存取一个全局存储对象。由于局部存储,新的更好的全局存储版本,你不能定义域,它是自动地与web应用运行时的脚本的源相联系。注意WebKit和Intemet Explorer 8 beta 2允许子域存取它们优先域的数据,可以和规范上的说法进行比较。全局存储和局部存储都是通过任一浏览器的窗口进行存取。就算浏览器被关闭数据也会一直保持,这一点不同于对话期存储。

    在Mac 0S x系统下,Firefox3.0保存这些持久性数据在下面路径的SQLite file里:

    /Users/[username]/Library/ApplieationSupport/Firefox/Profiles/[randornstring]/webappsstore.sqlite

    在WindowsXP系统下保存在:

    C {DocumentaandSettings[username] ApplICationDataMozilla|Firdox|Profiles [ random string ] webappsstore.sqlite

    ●数据库存储(database storage)。

    类似于Google GE ,HTML5的数据库存储允许一个web应用保存结构型数据,并在客户机端使用一个真正的SQL数据库。这一特性将允许非常强大的应用程序的开发。

    一个简单的例子是通过webKit开发人员发布的。它目前只支持数据库存储(最新版本还支持seS—sion和LOCal存储),像前面两个存储类型一样,你只能保存字符串和变量,且只能通过创建的那个域来访问。它的语法可以会存在一些问题。想要完整地参考请查看HTML5草案。现在展示一些快速而简单的例子:

    db=openDatabase(“dbTest”,“1.0”,“First Database'’,300000);

    db.transaction(function(tx){tX.executeSql(“CREATE TABLEMyTb(id REAL)”);});

    db.transaction(function(tx)}tX.executeSql(“SELECT *FROMMyTb'’,[],function(tX,reSult){alert(result.1OWS.item(0)[‘id’]);});WebKit(Safari等等)使用SQLite作为数据库端。

    在Mac OS X下你能发现数据库文件存放在:

    /Users/[usemame]/Library/Safari/Databases

    在Windows XP下数据库文件存放在:

    C:\Documents and Settings\[username]\LoealSettin4gs\ApplicationDataAppleComputer\ safari Databases

    3 结束语

    HTML5结构化客户端存储对Web开发者而言是一个强有力的器具,但是也加进了新的风险。这一存储技术尚未完全实现。但是由于浏览器销售商和Web开发者的激情,在未来将看到这项应用技术成指数级的增长。

    最终,浏览器生产商将允许更多的控制终端让用户去管理HTML5客户端存储,而局部存储将会取代全局存储。开发离线应用的需求会越来越多,其中包括目前流行的yahool widget和microSOFt SILverlight。



上一页  [1] [2] 


本文关键字:离线  程序  源码-程序单片机-工控设备 - 源码-程序