2016-09-18 2 views
3

내 앱에서는 WKWebView에 웹 페이지의 높이를 가져와야합니다. 그래서 아래 코드를 사용합니다.iOS10 WKWebview - evaluateJavaScript ("document.height") return nil

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

iOS 9까지는 웹 페이지 높이가 올바르게 반환됩니다. 하지만 iOS 10의 경우 contentHeight은 항상 nil입니다.

가 나는

webView.scrollView.scrollEnabled = false 

을 설정하고 웹보기는 UITableViewCell에했습니다.

webViewUITableViewCell의 높이가 가변적입니다. 웹보기에는 셀에 맞도록 위/아래 구속 조건이 있습니다.

웹 페이지 높이를 가져올 때 셀 높이에 반영되기를 원합니다.

+0

사용해 볼 수 있습니다. – 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

당신은 나뿐만 아니라이 문제에 직면하고있어, 내 현재 해결 방법은 지금, 그 contentSize.height을 사용하는 것입니다

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