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