我要在两个不同的Web视图中加载两个网站,加载网站后,我要隐藏它的某些内容,该内容可以使用 WKNavigationDelegate 完成方法完成。
但是问题是做完功能是在Web视图中加载网站后调用90秒。
该功能运行良好,但我只想知道为什么此功能加载太晚了,所以它应该在加载网站后立即执行该功能。
我的代码是
web_view.navigationDelegate = self as? WKNavigationDelegate
web_view.isUserInteractionEnabled = true
let request = URLRequest(url: url!)
self.web_view.load(request)
self.view.addSubview(self.web_view)
委托方法
extension urdu_HomeViewController : WKNavigationDelegate{
//enable javascript to remove vavigation from website
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
let removeelementid = "javascript:(function() { " + "document.getElementsByClassName('td-header-menu-wrap-full td-container-wrap')[0].style.display=\"none\"; " + "})()"
webView.evaluateJavaScript(removeelementid) { (res, error) in
if error != nil
{
print("Error")
}
else
{
//print(res!)
}
}
}
答案 0 :(得分:0)
WKNavigationDelegate didFinish方法仅在加载所有子资源后才被调用。因此,在您的情况下,可能是某些资源加载时间过多,并且延迟了调用didFinish的操作。
您应该宁愿使用WKUserScript
来在DOM准备好后立即执行JS。