改进的回退对象
当 OBJECT 元素加载资源失败时,将改为呈现 OBJECT 元素内部的内容。这称为对象回退,因为它允许您定义 Windows Internet Explorer 在遇到问题进行“回退”时所用的策略。
Windows Internet Explorer 7 引入了此功能以嵌套 OBJECT 元素;即使用多个 OBJECT 元素创建更丰富的回退策略,如以下示例中所示:
<object data="..." type="silverlight" > <object data="..." type="windows media file"> <object data="..." type="image/png"> -_-!!! </object> </object> <object>
此示例使用三个 OBJECT 元素定义一个对象回退策略。它首先尝试加载 Silverlight 应用程序。如果此操作失败,则要求使用Microsoft Windows Media 文件。如果无法加载 Windows Media 文件,则此示例加载一个图像。
如果您使用 Windows Internet Explorer 7 查看此示例,将会看到此图像,但是页面的文档对象模型 (DOM) 中只有一个 OBJECT 元素,因为 Windows Internet Explorer 7 不会为加载失败的对象创建 OBJECT 元素。
如果您使用 Windows Internet Explorer 8 查看此示例,将会看到页面的 DOM 中有包含三个 OBJECT 元素的图像。由于加载失败,前两个 OBJECT 元素处于非活动状态。不过,您可以使用 JavaScript 搜索这些元素。
注意:如果不刷新页面或使用 JavaScript 加载新对象,则无法重新激活处于非活动状态的对象。
Windows Internet Explorer 8 仅将这一新的回退行为用于与通信相关的错误,即只在加载请求生成客户端 HTTP 错误响应 (4xx) 或服务器 HTTP 错误响应 (5xx) 时发生。如果由于其他原因(如内容格式不正确或 ActiveX 控件损坏)导致请求失败,将发生原始回退行为。
HTML 5/AJAX 增强功能
Windows Internet Explorer 8 的 HTML 5 增强功能包括 AJAX 导航、DOM 存储、跨文档消息传送 (XDM) 和连接事件。它们是严格按照 W3C HTML 5.0 草案开发的。
- AJAX 导航
使用 AJAX 的显著好处之一是无需使用传统的页面导航即可更新页面内容。在某些情况下,使用 AJAX 无法保存页面状态,亦无法通知其组件,对此可能会令人疑惑,这是因为地址栏、“后退”和“前进”按钮等组件只能在页面导航后进行更新。因此,浏览器无法在旅行日志上保存 AJAX 内容更改或更新地址栏等组件。这可能使最终用户产生迷惑,不知道为什么浏览器总是显示旧内容。在 IE8 模式中,Windows Internet Explorer 像处理导航一样处理 window.location.hash 更新,并保存早期文档 URL。
- DOM 存储
现在,网页使用 document.cookie 属性将数据存储在本地计算机上。Cookie 能力有限,因为站点对每个域只能存储 50 个键/值对。此外,Cookie 编程模型很繁琐,需要分析数据的整个 Cookie 字符串。W3C 的 HTML 5 DOM 存储对象为键/值对字符串数据提供了一个更简单的全局和会话存储模型。站点可以在选项卡生命周期内存储数据或直到网站或用户清除数据。 每个域,包括其子域,有 10 MB 的本地存储空间。这有助于降低跨域攻击的可能性。同样,每个浏览器选项卡也有自己的会话存储。DOM 存储只是 Web 应用程序简化存储数据的一种机制 — 不使用后台数据库。例如,无法执行复杂的查询,如根据值搜索。
- 跨文档消息传送 (XDM)
浏览器的站点源策略阻止网页从其他域获得数据。这意味着单个网页上的不同域不能相互通信,从而无法提供更加丰富的体验。网站通过创建嵌套的 IFrame 并检索通过 URL 传送的数据绕过此策略。网站绕过此策略的另一种方法是直接托管脚本和其他域中的其他资源文件。第二种解决方法只允许单向通信。由于嵌入的脚本和资源使用与托管网站相同的权限运行,还可以访问用户的数据(如用户存储在 Cookie 中的数据),因此这种方法也存在安全风险。 XDM 提供的 postMessage 方法不显示在窗口对象中,这就允许不同的域根据给定的相互许可相互通信。XDM 为双向跨域通信提供了一种机制,比上述解决方法更简单、更能体现性能驱动。
- 连接事件
Windows Internet Explorer 8 允许网页通过 window.navigator.onLine 属性和联机/脱机事件检测浏览器何时联机或脱机。利用这些信息,您就可以使用 DOM 存储对象启用大量的脱机方案。例如,如果用户在登录到自己的 Live mail 页后失去了连接,页面会一直提示用户将草稿保存在 DOM 存储中并允许用户继续编辑电子邮件。恢复连接时,脚本会检索电子邮件并将其发送到服务器。
出处:腾讯Webteam
责任编辑:bluehearts
上一页 IE8面向Web开发人员的功能改进 [1] 下一页 IE8面向Web开发人员的功能改进 [3]
◎进入论坛网页制作、WEB标准化版块参加讨论,我还想发表评论。
|