2016-09-18 93 views
3

在我的应用程序中,我需要得到一个网页的高度在WKWebView。所以我使用下面的代码。iOS10 WKWebview - evaluateJavaScript(“document.height”)返回零

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

在iOS 9之前,这会正确返回网页高度。但在iOS 10中,contentHeight始终为nil

我设置

webView.scrollView.scrollEnabled = false 

和Web视图处于UITableViewCell

webViewUITableViewCell的高度是可变的。 Web视图上有一个顶部和底部约束以适应单元格。

当我得到网页高度时,我希望它能反映在单元格的高度。

+0

我面对这个问题为好,我目前的解决方法是使用它的contentSize.height,现在。 – wint

回答

8

试试这个:

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 not rendering correctly in iOS 10

+0

谢谢你的回复!我可以获得网页的高度!但是如果我设置WKWebview.scrollView.scrollEnabled = false,我无法获得高度。你知道一些想法吗? – Dosukoi

+0

我有同样的问题。也许这会帮助你:http://stackoverflow.com/a/39556938 – orazz

+0

非常感谢你的帮助! – Dosukoi

0

您可以尝试使用

webView.evaluateJavaScript(("document.body.offsetHeight"), completionHandler:^(id _Nullable result, NSError * _Nullable error) { 
    NSLog(@">>>%@",result); 
})