API文档
Internet Explorer 8 Beta 1 for Developers针对每一个域创建一个存储并且提供下列方法以便设置、获取和删除相应的入口。
下面这几行示例代码展示了如何创建一个存储,设置、获取和删除一个入口:
var storage = sessionStorage["http://www.contoso.com"];
//1a 以同样的方式为会话存储创建一个对象
var storage = sessionStorage["http://www.contoso.com"];
//2 存储一个键/值对存储
setItem("John","Public");
//3 根据一个给定的键值检索值串
var cptname = storage. getItem("John");
//4 从存储中删除一项
storage.removeItem("John")
方法
Internet Explorer 8 Beta 1 for Developers以异步方式把数据项写入存储中,从而不妨碍你的Web页面继续执行下去。为此,Internet Explorer 8 Beta 1 for Developers又进一步引入了begin和commit两个方法,支持开发人员标记出一个存储写操作的开始和结束。使用这些方法有助于使你确保对于一个给定的开始和结束序列所有的项(或没有任何项)被写入到存储中。换句话说,如果一个错误在写存储期间发生,那么,浏览器不会把相应的数据项提交到本机磁盘。
storage.begin
//2 设定一个或多个键/值对字符串
storage.setItem("John","Public");
//3 把数据项提交到磁盘
storage.commit
除了上面提到的setItem、getItem和removeItem方法外,Internet Explorer还包括了一个clear方法以用于一次性删除整个域存储而不必遍历每一个项。
属性
Internet Explorer 8提供了下列属性帮助你检查存储空间大小:
•length—你可以使用这个length属性检索你的每个域存储中的项数
•remainingSpace—你可以使用这个remainingSpace属性检查剩余的存储空间,此属性将返回剩下的字节数
事件
一旦某个存储区发生变化,Internet Explorer 8 Beta 1 for Developers都会在文档元素上引发一个storage事件。当数据项被提交到本机磁盘上时,Internet Explorer 8以后将在文档对象上引发一个storagecommit事件。值得注意的是,这些事件都是不可取消的,并且都没有默认的行为。
另外,每一个域及它下属的子域都占有10MB的本地存储空间。这有助于减少跨域攻击的可能性。同样,每一个浏览器选项卡也都有自己的会话存储。
【注意】DOM存储仅是针对Web应用程序提供的一个存储数据的简单机制,在其背后并不存在数据库支持。例如,没有什么办法可用于实现像按值查询这样的复杂查询。另外,globalStorage和sessionStorage对象以及相关联的方法都兼容于W3C HTML 5工作草案。
(三)XDomainRequest(XDR)
背景
目前的浏览器都遵循一种称为同一站点源策略(the same site origin policy,简称为“同源策略”)的安全策略,这一策略将阻止Web页面访问另一个域中的数据。通常情况下,网站通过让自己的服务器在后台请求另一个站点的服务器中的内容来克服这一约束,从而有效地绕过了在浏览器中的检查。图1展示了从Internet Explorer 7及以下版本的浏览器请求其他服务器内容的基本原理。
图1—Internet Explorer 7及以下版本在发出到mashup服务器的请求时,此请求必须通过代理到Web服务器才能实现