2012-11-15 27 views
4

我工作的一個客戶端問題,即Modernizr的意外沒有偵測到Internet Explorer 9中我的頁面的localStorage對象的支持,正確地使用HTML 5 DOCTYPE(<!DOCTYPE html>)和開發工具報告頁面有一個瀏覽器的模式IE9和IE9標準的文檔模式,所以我期望這個工作。爲什麼訪問Internet Explorer中的localStorage對象會引發錯誤?

我已經調試到Modernizr中的以下try/catch塊中,發現只要訪問localStorage對象就會拋出JavaScript錯誤。

tests['localstorage'] = function() { 
    try { 
     localStorage.setItem(mod, mod); 
     localStorage.removeItem(mod); 
     return true; 
    } catch(e) { 
     return false; 
    } 
}; 

在某些機器上,JavaScript錯誤的消息是The system cannot find the file specified.。在別人那只是Invalid argument.和Internet Explorer阻止了整整5分鐘內拋出錯誤之前。

什麼導致訪問localStorage對象在Internet Explorer上發生錯誤?

回答

9

如果最低級子域名匹配截至Restrictions on the File Mask and File Name Properties記錄在Internet Explorer,然後訪問localStorage對象將拋出一個錯誤的保留設備名的一個我發現。

由於在訪問localStorage對象以滿足Storage object initialization steps時,內部Internet Explorer嘗試訪問使用保留設備名稱的文件系統時可能會發生此問題。

這當然是非常邊緣的情況下,但如果你的網頁是來自於它的最低級子域名正是任何conprnauxclock$nulcom1com2com3com4com5com6服務器, com7com8com9lpt1lpt2lpt3lpt4lpt5lpt6lpt7lpt8,或lpt9(例如http://prn.example.com),那麼這庫侖以及你看到這個問題的原因。

選擇一個較低的水平子域,這不是一個保留設備名在這種情況下,解決了這個問題。

+0

這是一個羅嗦,參與回答自己的問題是有人問之前只有1分... – kinakuta

+1

現在你可以接受你自己的答案。 – Ridcully

+0

@kinakuta你是否暗示答案已經寫在問題發佈時?仍然不意味着惡意,只是想分享。 –

相關問題