2016-09-18 48 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); 
})