iOS10 WKWebview --valuJavaScript("document.height") возвращает ноль

В моем приложении мне нужно получить высоту веб-страницы в WKWebView, Поэтому я использую код ниже.

webView.evaluateJavaScript(("document.height"), completionHandler: { contentHeight,error in
    print(contentHeight)
})

До iOS 9 это правильно возвращает высоту веб-страницы. Но в iOS 10 contentHeight всегда nil,

Я поставил

webView.scrollView.scrollEnabled = false

и веб-представление находится в UITableViewCell,

Высота webView и из UITableViewCell являются переменными. Существует ограничение сверху и снизу на веб-представление, чтобы соответствовать ячейке.

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

2 ответа

Попробуй это:

let javascriptString = "" +
            "var body = document.body;" +
            "var html = document.documentElement;" +
            "Math.max(" +
            "   body.scrollHeight," +
            "   body.offsetHeight," +
            "   html.clientHeight," +
            "   html.offsetHeight" +
        ");"

    webView.evaluateJavaScript(javascriptString) { (result, error) in
        if error == nil {
            if let result = result, let height = JSON(result).int {
                self.htmlContentHeight = CGFloat(height)
                self.resetContentCell()
            }
        }
    }

PS. WKWebiew проблема рендеринга: WKWebView неправильно рендеринга в iOS 10

Вы можете попробовать использовать

webView.evaluateJavaScript(("document.body.offsetHeight"), completionHandler:^(id _Nullable result, NSError * _Nullable error) {
    NSLog(@">>>%@",result);
})
Другие вопросы по тегам