gpt4 book ai didi

ios - 每次检测 WKWebView 何时完成加载

转载 作者:IT王子 更新时间:2023-10-29 05:17:27 25 4
gpt4 key购买 nike

我有一个在 iPad 上的 iOS8 上运行的 WKWebView 应用程序(标准 iPad UserAgent:“Mozilla/5.0(iPad;CPU OS 8_1_1,如 Mac OS X)AppleWebKit/600.1.4(KHTML,如 Gecko)Version/8.0 Mobile/12B436 Safari /600.1.4”)。我已经尝试了所有我能想到的代表和听众,每次都尝试检测页面何时完成加载。这是问题所在:

  1. 打开您的 WKWebView 并转到 Google。以下是调用:

    _decidePolicyForNavigationAction
    _didStartProvisionalNavigation
    _ didFinishNavigation
  2. 在 Google 中输入“YouTube”: 仅调用 _decidePolicyForNavigationAction。没有 didStartProvisionalNavigation 或 didFinishNavigation

  3. 在 Google 中点击 YouTube。以下是调用:

    _didStartProvisionalNavigation
    _decidePolicyForNavigationAction
    _ didFinishNavigation
  4. 从现在开始,在 YouTube 中什么都叫不上。单击 YouTube 视频,没有 didStartProvisionalNavigation 或 didFinishNavigation。此外,不再调用 webview.loading 观察器。甚至 decidePolicyForNavigationAction 也只是偶尔被调用。但是……webView.backForwardList.currentItem 在每次点击后都会更新,所以这一定是在检测页面何时以某种方式完成加载?

这种行为也发生在很多其他网站上(例如 Vimeo)。我知道这种类型的网站不会每次都更新主框架,但是缺乏检测加载何时开始/完成的能力是否是 WKWebView 在其当前状态下的“限制”?

我想要实现的是:是否有另一种方法来检测导航何时完成,每次在 YouTube/Vimeo 等 Java 移动网站中:

  • 使用 NSURLProtocol 或类似的?
  • 或者也许是一种检测时间的方法webView.backForwardList.currentItem 是否更新?

感谢您的帮助。

最佳答案

我不确定页面加载后你到底想做什么,但希望观察这些属性可以帮助你:

webView.addObserver(self, forKeyPath: "estimatedProgress", options: .New, context: nil)
webView.addObserver(self, forKeyPath: "loading", options: .New, context: nil)
webView.addObserver(self, forKeyPath: "title", options: .New, context: nil)
webView.addObserver(self, forKeyPath: "canGoBack", options: .New, context: nil)
webView.addObserver(self, forKeyPath: "canGoForward", options: .New, context: nil)

关于ios - 每次检测 WKWebView 何时完成加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29603010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com