加载新的 html 字符串时如何防止 UIWebView 滚动到顶部?
Posted
技术标签:
【中文标题】加载新的 html 字符串时如何防止 UIWebView 滚动到顶部?【英文标题】:How to prevent UIWebView scroll to top when I load a new html string? 【发布时间】:2015-05-02 04:01:46 【问题描述】:我有一个 html 字符串,我将 html 字符串加载到 UIWebView,用户可以向下滚动 UIWebView。有时我更改了 html 字符串,所以我调用 UIWebView 加载新的 html 字符串。但是当我加载它时,UIWebView 滚动到顶部。新字符串和旧字符串之间的差异可能很小,所以我不知道 UIWebView 滚动到顶部。它应该是用户滚动它的前一个位置。我怎样才能做到这一点 ?
【问题讨论】:
uiwebview 的内容已更改并重新加载.. 我看到的解决方案之一是检查 uiwebview 的先前偏移量并存储它.. 当新的 html 字符串加载时滚动您的 web 视图到相同的偏移量..如果您可以将两个html内容之间的差异添加到旧的偏移量中。 搜了很多关于设置contentoffset的问题,好像没用... 试试这个:***.com/questions/3525256/… 【参考方案1】:uiwebview 的内容已更改并重新加载。我看到的解决方案之一是检查 uiwebview 的先前偏移量并存储它。当新的 html 字符串加载时,将您的 Web 视图滚动到相同的偏移量。 如果你能得到两个 html 内容之间的差异,请尝试将其添加到旧的偏移量。
您可以使用 javascript 来获取偏移量:
int scrollPosition = [[webView stringByEvaluatingJavaScriptFromString:@"window.pageYOffset"] intValue];
还可以使用 :
滚动到新的偏移量[webView stringByEvaluatingJavaScriptFromString:@"window.scroll(0,newOffset)"];
【讨论】:
我使用 [webView stringByEvaluatingJavaScriptFromString:@"window.scroll(0,newOffset)"];设置内容偏移量。然后我打印出新偏移量。它是正确的。但是 uiwebview 显示在顶部?它没有滚动... 尝试为第一个 webview 的内容制作它。对我来说,我已经测试过了,它工作正常。 您没有使用滚动位置。这是你应该使用的第二行代码: [_contentWebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.scroll(0,%d)" , scrollPosition]];以上是关于加载新的 html 字符串时如何防止 UIWebView 滚动到顶部?的主要内容,如果未能解决你的问题,请参考以下文章
iPhone - 如何防止 UIWebView 绘制/更新其内容
Apache 加载任何以与 url 中使用的相同字符串开头的文件。如何防止这种情况?