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);
})