localStorage和sessionStorage在ios10下的报错问题

也许你知道在safari的隐身模式下操作localStorage和sessionStorage会报错,但是你不知道在某些版本的ios(ios10最多)下开隐身模式,尝试使用typeof 判定localStorage和sessionStorage都会报错。

我一开始也不知道,我是通过js error监控才知道的,我们的监控系统发现两个第三方库pingpp-js和sa-sdk-javascript 都存在这样的报错,刚好是一个是用typeof 判定localStorage,另外一个是typeof 判定sessionStorage,这两者都会报SecurityError The operation is insecure.或者是DOM 18 Exception的错误。

这是pingpp-js当初报错的代码,经我们反馈给他们后,目前已修复

initPuid: function() {
    if (typeof window === 'undefined' || typeof localStorage === 'undefined'  // 这行会报错
        || localStorage === null) {
      return;
    }
    var puid = localStorage.getItem('pingpp_uid');
    if (puid === null) {}
}
pingpp-js修改后效果报错明显降低

这是sa-sdk-javascript 报错的代码

"object"== typeof window.sessionStorage  // 报错

这就说明了前端错误监控系统的重要性,没有错误监控就算有QA团队也不一定能发现这种错误,微笑

你可能感兴趣的:(localStorage和sessionStorage在ios10下的报错问题)