也许你知道在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团队也不一定能发现这种错误,微笑
网友评论