Определение того, отключился ли WKWebView

Я создаю простое приложение для iOS с использованием SWIFT. Он загружает одностраничное приложение в 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?


person Oliver Zhang    schedule 06.01.2015    source источник


Ответы (2)


В 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
    }];
person Nadzeya    schedule 28.04.2015

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
            }
        }
person Oliver Zhang    schedule 22.09.2015
comment
Поправьте также для Swift. - person iDoc; 28.07.2020