【BUG笔记】WebView返回时重复加载问题(CanGoBack返回true)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【BUG笔记】WebView返回时重复加载问题(CanGoBack返回true)相关的知识,希望对你有一定的参考价值。
参考技术A 同一webview页面,加载完成后在小米手机上可正常返回,即canGoBack为false,直接调用super.onBackPress方法退出activity;而华为、oppo(目前已知)机型上,会出现canGoBack为true的情况,此时按下返回键会重新加载页面,用户体验很差。1、经过debug检查,异常机型上页面加载会回调到shouldOverrideUrlLoading方法,由此判断可能是由于页面初始化发生了重定向导致的问题;
2、经过分析H5页面,发现页面加载时使用了window.location.replace方法,测试后发现在华为OV流手机上会被识别为跳转了新页面,即canGoback会返回true,造成返回时重复加载页面的问题。
1、让H5大佬修改下实现,避免使用replace(废话)
2、在onBackPress中判断当前加载的url和webview初始化时的url是否一致,如一致即代表目前实际处在顶层页面,不调用goback方法即可。
从 webView goBack 后 PDF 不加载
【中文标题】从 webView goBack 后 PDF 不加载【英文标题】:PDF does not load after goBack from webView 【发布时间】:2017-09-15 08:08:53 【问题描述】:我目前正在使用 webView 显示 pdf。在这个 pdf 中,我有到其他网站的超链接。
问题是,当我转到其中一个网站并在那里滚动一点时,当我单击后退按钮(调用 webView.goBack()
)时,它会返回 pdf,跳到顶部并且可以不再滚动它,除了第一页之外什么都看不到,所以它也可能无法正确加载。
另外,如果我也这样做,请访问该网站,但根本不要在那里滚动,或者根本不做任何事情。如果我点击后退按钮,它会带我回到 pdf 并且工作得很好。
那么对于这里可能出现的问题以及如何解决它有什么建议吗?
编辑:我还添加了一张图片来展示它的外观
【问题讨论】:
您的 webView 是否启用了 userInteraction 和滚动功能? 是的,我确实启用了它。在点击超链接之前它确实可以正常工作 【参考方案1】:我为此找到的解决方案是在委托方法中再次显示pdf时重新加载webView
点击导航栏后退按钮时:
fileprivate var shouldReloadWebView: Bool = false
@objc private func tappedBackButton(_ button: UIButton)
if webView.canGoBack
shouldReloadWebView = true
webView.goBack()
else
self.navigationController!.popViewController(animated: true)
在委托方法中:
func webViewDidFinishLoad(_ webView: UIWebView)
if shouldReloadWebView
shouldReloadWebView = false
webView.reload()
【讨论】:
以上是关于【BUG笔记】WebView返回时重复加载问题(CanGoBack返回true)的主要内容,如果未能解决你的问题,请参考以下文章
Objective C - WebView无法从顶部重新加载
重新加载 webview 时 EasyJSWebView 中断