Как запустить функцию до завершения загрузки WKWebView?
Я создаю проект Swift для iOS, который имеет несколько WKWebViews, которые отображают внешние веб-сайты. У некоторых из этих веб-сайтов нет административного доступа, поэтому я использую некоторый код, чтобы скрыть 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
функция, но я предполагаю, потому что он выполняется до загрузки представления, элемент не присутствует в представлении для его удаления.
1 ответ
Смотреть на WKUserScript
, настроенный как часть WKUserContentController
(определяется в WKWebViewConfiguration
). Вероятно, этого будет достаточно, но вы можете продвинуться дальше, внедрив блокировщик контента. Увидеть WKContentRuleStore
для их внутренней настройки в вашем приложении, и в частности в Справочнике по правилам блокировки контента Safari для получения подробной информации о синтаксисе.