Safari 无痕窗口里统计脚本整段不执行,控制台一行 SecurityError: The operation is insecure,排在后面的初始化全跟着停了。日志里能对上时间点,这种反而好排。
无痕模式下 localStorage 写入会抛异常,脚本没包 try catch,异常往上冒,同文件后面的逻辑全部中断。读取时也可能直接给 null,不做判断一样崩,两种都要兜住。这一点先确认清楚,后面就不用反复试。
function safeGet(k) {
try { return localStorage.getItem(k); }
catch (e) { return null; }
}
围绕「无痕模式报错」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。偶发问题先统计频率,一小时几次和一天一次,查法完全不同。
改完顺手把文档补一句,省得下次自己重新推一遍。监控和日志的时间要对上,时区不一致会多绕很大一圈。
处理上按这个顺序:所有存储读写包一层 try catch,失败时退回内存变量;同意状态优先读 cookie,本地存储只当缓存,读不到按拒绝处理;把统计初始化挪到最后,前面出错不至于整页功能全挂。
结果对不对很好判断,Safari 无痕窗口打开首页,控制台没有 SecurityError,页面其他交互照常可用。
