【问题标题】:IE 11 caching javascript overridesIE 11 缓存 javascript 覆盖
【发布时间】:2015-12-18 14:08:29
【问题描述】:

当涉及到 javascript 中的覆盖函数时,我在 IE11 中遇到了一些奇怪的行为。

在网页上我有以下代码:

(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() 函数。

但是,我在代码中遇到了一些问题,因此决定将其注释掉。 当我刷新页面(当然清除缓存)时,同样的问题仍然存在。 我很快意识到 IE 以某种方式缓存了我的覆盖。 我搜索了所有文件以确保我没有在其他任何地方覆盖它,我什至尝试通过控制台手动将其设置为空(换句话说,刷新后它不应该为空)并且在刷新后,它现在为空。

它似乎以某种方式按域或每个 URL 进行缓存,我不知道如何清除此缓存,或者是否有可能。

我什至尝试修复 IE,但我的网页上的 localStorage.setItem 仍然为空。

【问题讨论】:

    标签: javascript internet-explorer caching browser-cache


    【解决方案1】:

    我仍然不知道为什么覆盖会被缓存,但我找到了重置它的方法。 调用 localStorage.clear() 会重置整个 localStorage-object,包括 setItem-function。

    为了避免剩下的问题,我只是简单地制作了一个普通的包装函数,而不是覆盖原始函数,并从我本来会调用 localStorage.setItem() 的所有地方调用它。

    【讨论】:

      猜你喜欢
      • 2021-02-15
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多