检测WKWebView是否已空白

时间:2015-01-06 23:48:49

标签: swift ios8 wkwebview

我正在使用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行?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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