iOS 14.7.1系统下WordPress站点Safari下拉菜单跳转异常咨询
问题属性判定
这不是设备专属兼容性问题,是iOS 14+ 版本内置Safari浏览器的智能跟踪预防(ITP)策略导致的特性差异,同系统版本的所有iOS设备都会复现该问题,和硬件无关。Chrome浏览器因为Cookie限制规则和Safari ITP逻辑不同,所以不会触发异常。
绝大多数这类场景的根因为下拉菜单的点击跳转逻辑包含前置Cookie读写操作:
- 当你取消Cookie拦截时,iOS 14.7.1的Safari ITP如果判定你要写入的Cookie符合跟踪类特征,会直接静默阻止Cookie写入,不会抛出明确的异常提示,你的JS代码如果没有兼容这种静默失败的场景,就会终止执行,不会触发后续的跳转逻辑。
- 当你开启Cookie拦截时,Safari会给JS返回明确的Cookie操作被拒绝的状态,你的现有代码逻辑应该默认兼容了Cookie写入失败的分支,跳过Cookie存储步骤直接执行跳转,所以功能反而正常。
排查修复步骤
- 连接Safari Web检查器,在允许Cookie的场景下复现问题,查看控制台是否存在
QuotaExceededError或者ITP相关的警告日志,定位Cookie操作的具体代码位置 - 给跳转前的Cookie读写逻辑包裹
try/catch异常捕获语句,无论Cookie操作成功还是失败,都正常执行跳转逻辑 - 优先使用
sessionStorage存储用户的临时选择状态,相比Cookie受Safari ITP策略的限制更少,兼容性更好
内容的提问来源于stack exchange,提问作者user6741219
相关产品推荐
相关产品推荐

