WKNavigation委托函数调用为时已晚

时间:2019-06-14 11:39:35

标签: swift xcode wkwebview

我要在两个不同的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!)
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

WKNavigationDelegate didFinish方法仅在加载所有子资源后才被调用。因此,在您的情况下,可能是某些资源加载时间过多,并且延迟了调用didFinish的操作。

您应该宁愿使用WKUserScript来在DOM准备好后立即执行JS。