2015-12-18 63 views
0

我在IE11中遇到了一些奇怪的行爲,當涉及到重寫JavaScript中的函數。IE 11緩存的JavaScript覆蓋

在網頁中我有以下代碼:

(function() 
{ 
    var tempSetItem = window.localStorage.setItem; 
    window.localStorage.setItem = function (key, data) 
    { 
     var newdata = JSON.stringify(data); 
     newdata = JSON.parse(newdata); 
     newdata.CachedDate = new Date(); 
     tempSetItem.call(window.localStorage, key, JSON.stringify(newdata)); 
    }; 
})(); 

這應該簡單地重寫localStorage.setItem()功能。

但是,我遇到了代碼的一些麻煩,並決定評論它。 當我刷新頁面(清除緩存ofcourse)同樣的問題仍然存在。 我很快意識到,IE瀏覽器以某種方式緩存了我的覆蓋。 我搜索了我的所有文件,以確保我沒有覆蓋它在任何其他地方,我甚至試圖通過控制檯手動設置爲空(換句話說,它不應該爲空後刷新)和刷新後,它現在是空的。

它似乎被緩存每個域​​或每個URL以某種方式,我不知道如何清除此緩存或如果它甚至可能。

我甚至試過修復IE,但localStorage.setItem在我的網頁上仍然是空的。

回答

0

我仍然不知道爲什麼重寫獲取緩存,但我找到了重置它的方法。 調用localStorage.clear()重置整個localStorage對象,包括setItem函數。

爲了避免問題的其他問題,我簡單地做了一個普通的包裝函數,而不是覆蓋原始文件,並從所有地方調用該函數,否則我會調用localStorage.setItem()