H5页面不响应WebView代理方法

问题

在项目中接入了WKWebView,在调试网页的过程中碰到一个问题:
在点击a标签的时候,不会触发webView的navigationDelegate代理方法,如:
webView:decidePolicyForNavigationAction:decisionHandler:
webView:decidePolicyForNavigationResponse:decisionHandler:等等,
原本我是在网页加载完成后更新下网页的返回按钮的,这下不起作用了。

a标签的代码

(a标签的事件已经被拦截,网页使用的是vue)
<a class="activity-item-wrapper" href="/activity-detail/588425470926a819f7b8d61d">  </a>

曲线救国

虽然代理方法不会响应,但是经过尝试canGoBack这个属性的值还是会随着页面的变化而变化的,所以我直接监听这个属性,也可以达到我想要的效果

[self.webView.realWebView addObserver:self forKeyPath:@"canGoBack" options:NSKeyValueObservingOptionNew context:nil];

为什么会出现这种问题

经过请教我司前端的同学后,了解到原网页使用的是H5的History Api,应该是在不刷新页面的情况下切换Url,导致WKWebView没有Call代理方法,但是canGoBack和canGoForward属性是可以检测到的。现在H5的体验越来越好,许多SPA应用都是采用的这种方法。

大概流程:

  1. 在A页面 通过发AJAX请求 请求页面中的B数据。
  2. 在页面A中通过JS装载相应的信息到相应的位置来。
  3. 通过History API在不刷新页面的情况下在浏览器的地址栏中从页面A的URL地址切换到页面B的URL地址。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 关于UIWebView的介绍,相信看过上文的小伙伴们,已经大概清楚了吧,如果有问题,欢迎提问。 本文是本系列...
    CoderLF阅读 9,366评论 2 12
  • 1、加载网页 WKWebView *webView = [[WKWebView alloc] initWithFr...
    LearningCoding阅读 3,273评论 0 2
  • 一、WebView WebView就是一个内嵌浏览器控件,在iOS中主要有两种WebView:UIWebView和...
    iOS祎阅读 1,251评论 0 2
  • 0. 前言 前面有被用户投诉 APP 流量消耗厉害: 于是乎考虑了流量方面的问题。暂时 APP 中涉及流量的几个方...
    zyl06阅读 24,474评论 5 63
  • 涉及保密问题,特此声明:文章中提到的数据等均为虚拟数据或模型数据,无实际意义,请勿商用或借此造谣。转载请注明出处:...
    summerflower阅读 299评论 0 2

友情链接更多精彩内容