【问题标题】:Detecting whether a WKWebView has blanked检测 WKWebView 是否已空白
【发布时间】:2015-01-06 23:48:48
【问题描述】:

我正在使用 SWIFT 构建一个简单的 iOS 应用程序。它在主视图全屏的 WKWebView 中加载单页应用程序。单击广告将在模态呈现的新场景中打开另一个 WKWebView。但是,如果我在新场景中单击多个页面并返回主视图,则主视图有 50% 的机会变为空白。

当主视图变为空白时,它会从 Safari 检查器中消失,并且 webView.reload() 不起作用。但是 loadHTMLString 有效。所以我可以这样做:

1. override func viewWillAppear(animated: Bool) {
2.     super.viewWillAppear(false)
3.     if pageStatus == .BackFromAdScene {
4.         if webView is Blank {
5.              loadFromLocal()
6.         }
7.     }
8. }

我很好奇检测 WKWebView 是否为空白的最简单方法是什么?换句话说,我应该如何写第 4 行?

【问题讨论】:

    标签: swift ios8 wkwebview


    【解决方案1】:

    在 Objective-c 中,我用这个技巧做到了:

        [self.webView evaluateJavaScript:@"document.querySelector('body').innerHTML" completionHandler:^(id result, NSError *error) {
           if (!result || ([result isKindOfClass:[NSString class]] && [((NSString *)result) length] == 0)) {
           // reload your page
        }];
    

    【讨论】:

      【解决方案2】:

      user3437673 的回答是正确的。这是像我这样最近才开始进行 iOS 开发的人的 SWIFT 代码。

             self.webView?.evaluateJavaScript("document.querySelector('body').innerHTML") { (result, error) in
                  if error != nil {
                      // the main web view has turned blank
                      // do something like reload the page
                  }
              }
      

      【讨论】:

      • 也适用于 Swift。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多