我正在创建一个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
函数中,但是我假设因为它在加载视图之前运行,因此视图中不存在要删除的元素。
答案 0 :(得分:1)
查看WKUserScript
,它被配置为WKUserContentController
(在WKWebViewConfiguration
中定义)的一部分。那可能足够好了,但是您可以通过实现内容阻止程序来进一步推动它。请参阅WKContentRuleStore
,以在应用程序内部进行设置,尤其是Safari Content-Blocking Rules Reference,以获取有关语法的详细信息。