自动滚动页面uiwebview底部

Posted

技术标签:

【中文标题】自动滚动页面uiwebview底部【英文标题】:Auto scroll bottom of page uiwebview 【发布时间】:2010-12-06 11:09:43 【问题描述】:

我希望一旦 webview 加载

- (void)webViewDidFinishLoad:(UIWebView *)webBrowser 
    //Scroll to bottom

只关注底部,所以基本上只显示到 uiwebview 的底部并可能将其锁定在那里,因此用户无法滚动。

【问题讨论】:

【参考方案1】:

首先你必须得到内容高度,我从来没有亲自做过,但here 是一个很好的起点:

这里有一些可用的常量 给出窗口的文档区域 可用于写入。 这些将不可用,直到 加载文档后, 用于引用它们的方法是 浏览器特定。可用的 常量是:

window.innerHeight/Width 提供者 大多数浏览器,但重要的是,不是 IE浏览器。 document.body.clientHeight/Width 由许多浏览器提供,包括 IE浏览器。 文档.文档元素。 clientHeight/Width 大多数提供 DOM 浏览器,包括 Internet 探险家。

然后滚动到你想要的偏移量是这样的:

[webView stringByEvaluatingjavascriptFromString: [NSString stringWithFormat:@"scrollTo(0,%d)",scrollPosition]; 

【讨论】:

【参考方案2】:

webview 内部的操作由 JavaScript 控制,因此您可以在 Scroll Automatically to the Bottom of the Page 找到各种解决方案。

基于 Tho 答案 (var scrollingElement = (document.scrollingElement || document.body); scrollingElement.scrollTop = scrollingElement.scrollHeight;) 的示例:

使用 UIWebView(已弃用)

DispatchQueue.global().async 
    _ = webView.stringByEvaluatingJavaScript(from: "var scrollingElement = (document.scrollingElement || document.body); scrollingElement.scrollTop = scrollingElement.scrollHeight;")

使用 WKWebView (ios 8+)

webView.evaluateJavaScript("var scrollingElement = (document.scrollingElement || document.body); scrollingElement.scrollTop = scrollingElement.scrollHeight;")

【讨论】:

以上是关于自动滚动页面uiwebview底部的主要内容,如果未能解决你的问题,请参考以下文章

无法弄清楚为啥页面在底部加载? Angular UI-Router 自动滚动问题

利用JS,如何判断滚动条是不是滚动到页面最底部

UIWebView 滚动替换

Android ScrollView 自动滚动到视图底部

Jquery鼠标滚动到页面底部自动加载更多内容,使用分页

Jquery鼠标滚动到页面底部自动加载更多内容,使用分页