改進(jìn)的回退對(duì)象
當(dāng) OBJECT 元素加載資源失敗時(shí),將改為呈現(xiàn) OBJECT 元素內(nèi)部的內(nèi)容。這稱為對(duì)象回退,因?yàn)樗试S您定義 Windows Internet Explorer 在遇到問(wèn)題進(jìn)行“回退”時(shí)所用的策略。
Windows Internet Explorer 7 引入了此功能以嵌套 OBJECT 元素;即使用多個(gè) OBJECT 元素創(chuàng)建更豐富的回退策略,如以下示例中所示:
<object data="..." type="silverlight" > <object data="..." type="windows media file"> <object data="..." type="image/png"> -_-!!! </object> </object> <object>
此示例使用三個(gè) OBJECT 元素定義一個(gè)對(duì)象回退策略。它首先嘗試加載 Silverlight 應(yīng)用程序。如果此操作失敗,則要求使用Microsoft Windows Media 文件。如果無(wú)法加載 Windows Media 文件,則此示例加載一個(gè)圖像。
如果您使用 Windows Internet Explorer 7 查看此示例,將會(huì)看到此圖像,但是頁(yè)面的文檔對(duì)象模型 (DOM) 中只有一個(gè) OBJECT 元素,因?yàn)?Windows Internet Explorer 7 不會(huì)為加載失敗的對(duì)象創(chuàng)建 OBJECT 元素。
如果您使用 Windows Internet Explorer 8 查看此示例,將會(huì)看到頁(yè)面的 DOM 中有包含三個(gè) OBJECT 元素的圖像。由于加載失敗,前兩個(gè) OBJECT 元素處于非活動(dòng)狀態(tài)。不過(guò),您可以使用 JavaScript 搜索這些元素。
注意:如果不刷新頁(yè)面或使用 JavaScript 加載新對(duì)象,則無(wú)法重新激活處于非活動(dòng)狀態(tài)的對(duì)象。
Windows Internet Explorer 8 僅將這一新的回退行為用于與通信相關(guān)的錯(cuò)誤,即只在加載請(qǐng)求生成客戶端 HTTP 錯(cuò)誤響應(yīng) (4xx) 或服務(wù)器 HTTP 錯(cuò)誤響應(yīng) (5xx) 時(shí)發(fā)生。如果由于其他原因(如內(nèi)容格式不正確或 ActiveX 控件損壞)導(dǎo)致請(qǐng)求失敗,將發(fā)生原始回退行為。
HTML 5/AJAX 增強(qiáng)功能
Windows Internet Explorer 8 的 HTML 5 增強(qiáng)功能包括 AJAX 導(dǎo)航、DOM 存儲(chǔ)、跨文檔消息傳送 (XDM) 和連接事件。它們是嚴(yán)格按照 W3C HTML 5.0 草案開發(fā)的。
- AJAX 導(dǎo)航
使用 AJAX 的顯著好處之一是無(wú)需使用傳統(tǒng)的頁(yè)面導(dǎo)航即可更新頁(yè)面內(nèi)容。在某些情況下,使用 AJAX 無(wú)法保存頁(yè)面狀態(tài),亦無(wú)法通知其組件,對(duì)此可能會(huì)令人疑惑,這是因?yàn)榈刂窓、“后退”和“前進(jìn)”按鈕等組件只能在頁(yè)面導(dǎo)航后進(jìn)行更新。因此,瀏覽器無(wú)法在旅行日志上保存 AJAX 內(nèi)容更改或更新地址欄等組件。這可能使最終用戶產(chǎn)生迷惑,不知道為什么瀏覽器總是顯示舊內(nèi)容。在 IE8 模式中,Windows Internet Explorer 像處理導(dǎo)航一樣處理 window.location.hash 更新,并保存早期文檔 URL。
- DOM 存儲(chǔ)
現(xiàn)在,網(wǎng)頁(yè)使用 document.cookie 屬性將數(shù)據(jù)存儲(chǔ)在本地計(jì)算機(jī)上。Cookie 能力有限,因?yàn)檎军c(diǎn)對(duì)每個(gè)域只能存儲(chǔ) 50 個(gè)鍵/值對(duì)。此外,Cookie 編程模型很繁瑣,需要分析數(shù)據(jù)的整個(gè) Cookie 字符串。W3C 的 HTML 5 DOM 存儲(chǔ)對(duì)象為鍵/值對(duì)字符串?dāng)?shù)據(jù)提供了一個(gè)更簡(jiǎn)單的全局和會(huì)話存儲(chǔ)模型。站點(diǎn)可以在選項(xiàng)卡生命周期內(nèi)存儲(chǔ)數(shù)據(jù)或直到網(wǎng)站或用戶清除數(shù)據(jù)。 每個(gè)域,包括其子域,有 10 MB 的本地存儲(chǔ)空間。這有助于降低跨域攻擊的可能性。同樣,每個(gè)瀏覽器選項(xiàng)卡也有自己的會(huì)話存儲(chǔ)。DOM 存儲(chǔ)只是 Web 應(yīng)用程序簡(jiǎn)化存儲(chǔ)數(shù)據(jù)的一種機(jī)制 — 不使用后臺(tái)數(shù)據(jù)庫(kù)。例如,無(wú)法執(zhí)行復(fù)雜的查詢,如根據(jù)值搜索。
- 跨文檔消息傳送 (XDM)
瀏覽器的站點(diǎn)源策略阻止網(wǎng)頁(yè)從其他域獲得數(shù)據(jù)。這意味著單個(gè)網(wǎng)頁(yè)上的不同域不能相互通信,從而無(wú)法提供更加豐富的體驗(yàn)。網(wǎng)站通過(guò)創(chuàng)建嵌套的 IFrame 并檢索通過(guò) URL 傳送的數(shù)據(jù)繞過(guò)此策略。網(wǎng)站繞過(guò)此策略的另一種方法是直接托管腳本和其他域中的其他資源文件。第二種解決方法只允許單向通信。由于嵌入的腳本和資源使用與托管網(wǎng)站相同的權(quán)限運(yùn)行,還可以訪問(wèn)用戶的數(shù)據(jù)(如用戶存儲(chǔ)在 Cookie 中的數(shù)據(jù)),因此這種方法也存在安全風(fēng)險(xiǎn)。 XDM 提供的 postMessage 方法不顯示在窗口對(duì)象中,這就允許不同的域根據(jù)給定的相互許可相互通信。XDM 為雙向跨域通信提供了一種機(jī)制,比上述解決方法更簡(jiǎn)單、更能體現(xiàn)性能驅(qū)動(dòng)。
- 連接事件
Windows Internet Explorer 8 允許網(wǎng)頁(yè)通過(guò) window.navigator.onLine 屬性和聯(lián)機(jī)/脫機(jī)事件檢測(cè)瀏覽器何時(shí)聯(lián)機(jī)或脫機(jī)。利用這些信息,您就可以使用 DOM 存儲(chǔ)對(duì)象啟用大量的脫機(jī)方案。例如,如果用戶在登錄到自己的 Live mail 頁(yè)后失去了連接,頁(yè)面會(huì)一直提示用戶將草稿保存在 DOM 存儲(chǔ)中并允許用戶繼續(xù)編輯電子郵件;謴(fù)連接時(shí),腳本會(huì)檢索電子郵件并將其發(fā)送到服務(wù)器。
出處:騰訊Webteam
責(zé)任編輯:bluehearts
上一頁(yè) IE8面向Web開發(fā)人員的功能改進(jìn) [1] 下一頁(yè) IE8面向Web開發(fā)人員的功能改進(jìn) [3]
◎進(jìn)入論壇網(wǎng)頁(yè)制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評(píng)論。
|