location.href在iOS WKWebView中连续调用异常问题咨询
iOS WKWebView连续调用
location.href仅最后一次生效的原因 - WKWebView自带性能优化的合并机制:为了减少无效导航开销,iOS的WKWebView会对短时间内连续触发的
location.href跳转请求做合并处理,直接执行最后一次请求,忽略前面的。而Android WebView没有这种合并逻辑,会按顺序处理每一次跳转。 - JS属性赋值的覆盖特性:
location.href本质是属性赋值,不是异步调用。WKWebView的JS引擎在同一事件循环里处理连续的location.href赋值时,后面的赋值会直接覆盖前面的,引擎会认为这是对同一个属性的更新操作,而非多次独立的导航请求。 - 导航请求的生命周期限制:WKWebView的导航流程有严格的生命周期,前一次
location.href触发的导航请求还没完成初始化步骤,后一次请求就已经发起,前一个请求会被直接丢弃。Android WebView的导航处理则允许短时间内的连续请求依次执行。
内容的提问来源于stack exchange,提问作者kyeahen
相关产品推荐
相关产品推荐

