我注意到[UIWebViewDelegate webView:shouldStartLoadWithRequest:navigationType:]只使用传统<a href="...">链接调用,而不是单页Web应用程序JavaScript导航.
例如,如果我在a中访问m.facebook.com UIWebView并开始点击顶部导航(见下面的截图),它永远不会触发该委托方法.
我想要一个方法挂钩的原因是因为我想在UIWebView上面添加后退和前进按钮,但我需要知道何时启用/禁用这些按钮.我应该使用其他一些委托方法来正确地听取导航更改吗?
更新:我还应该注意到移动版Safari正确更新了Facebook移动网站上的后退/前进按钮状态,所以我希望Apple为开发人员提供了一种方法来实现这一点.
似乎这根本不是UIWebViewDelegate,也不是WKNavigationDelegate(我刚用facebook测试过)支持的.此答案中列出了一些选项:
- javascript注入捕获页面更改(阅读history.pushState).
- KVO监视webview的变化(如scrollview大小调整)
- 观看标题更改,如上所述.
- 每次用户点击视图时检查更新.
更新
我也在facebook上尝试了这个答案,其中涉及在每次新页面加载期间注入javascript以捕获XMLHTTPRequests.它有点像你要求的,但有点像黑客.某些facebook标签在一个非常简单的实现中无法正常工作,但您可以解决这些问题.
| 归档时间: |
|
| 查看次数: |
715 次 |
| 最近记录: |