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內容的高度,這是在iOS8
, iOS9
和iOS11
工作正常,但在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之後。
希望這會幫助你。