Как запустить функцию до завершения загрузки WKWebView? - PullRequest
0 голосов
/ 31 декабря 2018

Я создаю проект Swift для iOS, в котором есть несколько WKWebView, отображающих внешние веб-сайты.У некоторых из этих веб-сайтов нет административного доступа, поэтому я использую некоторый код, чтобы скрыть класс div.Это работает нормально, но элемент скрыт ПОСЛЕ загрузки страницы, поэтому в течение нескольких секунд элемент div показывается пользователю.См. Ниже:

 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    print("finished")
    let elementID = "some_element"
    let removeElementIdScript = "var element = document.getElementById('\(elementID)'); element.parentElement.removeChild(element);"
    webView.evaluateJavaScript(removeElementIdScript) { (response, error) in
        debugPrint("removed")
    }
}

Есть ли способ реализовать этот код до загрузки представления?Или, если это невозможно, как я могу разместить маску или скрыть вид, пока он не загрузится.Я хочу избежать показа элемента div любой ценой.

Я уже пытался поместить код в функцию didStartProvisionalNavigation, но я предполагаю, что, поскольку он запускается до загрузки представления, элемент isnне присутствует в представлении для его удаления.

1 Ответ

0 голосов
/ 31 декабря 2018

Посмотрите на WKUserScript, настроенную как часть WKUserContentController (определено в WKWebViewConfiguration).Вероятно, этого будет достаточно, но вы можете продвинуться дальше, внедрив блокировщик контента.См. WKContentRuleStore для внутренней настройки вашего приложения и, в частности, Справочник по правилам блокировки содержимого Safari для получения подробной информации о синтаксисе.

...