检测 WKWebView 是否已经消隐

Detecting whether a WKWebView has blanked

我正在使用 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行应该怎么写呢?

在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
    }];

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

       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
            }
        }