javascript - type - xcode webview https




使用'document.body.scrollHeight'計算UIWebView內容動態高度 在iOS 10中返回更大的值 (2)

我正在使用Objective C創建一個應用程序,我正在使用UIWebView以HTML格式顯示內容。 我在UIWebView委託方法webViewDidFinishLoad使用下面的代碼

NSUInteger contentHeight = [[aWebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@“document.body.scrollHeight;”]] intValue];

計算webview內容的高度,這是在iOS8iOS9iOS11工作正常,但在iOS10 iPhone手機的內容高度返回一個比實際內容值更大的值。 正因為如此,我在屏幕底部顯示了一些額外的空白。

我嘗試了所有的解決方案,但只有在iOS 10中獲得相同的錯誤的內容高度。請幫我解決這個問題。 先謝謝你!


可悲的是,我也找不到這個問題。 但是,我想我知道罪魁禍首:html <tables>和自動調整大小。 在蘋果的Safari瀏覽器更新日誌中,關於視口和渲染更改有一些討論,但沒有足夠的具體內容。

它會出現webviews(Safari瀏覽器動力)不同版本之間呈現HTML不同; 有道理,雖然我不能提供很多韻或理由和明確的CSS <table><body>什麼也沒有。

希望這個部分的答案有助於取得一些進展,或至少有一個解決辦法。


我努力了很多,以正確調整WebView的大小。

嘗試在評估document.body.scrollHeight之前再添加一個步驟。

像這樣的東西:

-(void) webViewDidFinishLoad:(UIWebView *)webView {
    if[[webView stringByEvaluatingJavaScriptFromString:@"document.readyState"] isEqualToString:@"complete"]){
webViewHeight = [[WebView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"] floatValue];
//resize logic
}

我在swift和WKWebView中編寫我的代碼,但基本上是一樣的。 關鍵是要抓住scrollHeight(或者offsetHeight - 在這種情況下找不到差異),而且似乎那個時刻只是在document.readyState之後。

希望這會幫助你。





ios10