Функции делегатов WKNavigation вызывают слишком поздно - PullRequest
0 голосов
/ 14 июня 2019

Я загружаю два веб-сайта в двух разных веб-представлениях, и после загрузки веб-сайта я скрываю некоторый его контент, который отлично работает, используя WKNavigationDelegate сделал окончательный метод.

но проблема устранена. Функция завершения вызывает около 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 голосов
/ 14 июня 2019

WKNavigationDelegate Метод didFinish вызывается только после загрузки всех субресурсов.Так что в вашем случае может случиться так, что некоторый ресурс загружается слишком много времени и это задерживает вызов didFinish.

Вы должны использовать WKUserScript для выполнения JS сразу после того, как DOM будет готов.

...