【发布时间】:2021-01-07 11:49:50
【问题描述】:
我有一些 html 页面作为应用内帮助,我使用 WKWebView 来显示它们,其中包括一个调用 goBack 的“返回”按钮。
一切都很顺利,除了后退按钮总是将您带到上一个本地 html 页面的最顶部(而不是您单击的链接所在页面的滚动位置),尽管如果您跟随更多链接它工作正常到远程内容并使用“返回”从一个远程页面转到上一个远程页面。
我已经删除了所有额外的东西来调试这个,比如帖子导航等,所以目前我只是打电话给:
[webView loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"help" withExtension:@"html"]]];
然后只需[webView goBack] 并返回您所访问的页面顶部。如果您跟随指向另一个内部 html 或外部页面的链接,则无关紧要。但是,正如我所说,如果您点击一个指向外部页面的链接,然后再点击另一个外部页面,则第一个返回会将您带到第一个外部页面的正确位置。
有什么想法吗?它使浏览内部 html 很烦人。
编辑:好的,它可能与实际的 html 有关 - 有一个页面可以返回工作,试图找出差异。 <body> 之前的所有内容都相同,所有页面都通过 w3.org html4 过渡验证。
【问题讨论】:
-
WKWebView 的
var backForwardList: WKBackForwardList { get }应该可以帮助您找出当前可以前进和后退的页面堆栈,并找出列表中缺少哪个页面。 -
@dispatchMain 这与缺少页面无关。它会将您带回到正确的页面,但不是在正确的滚动位置,而是在页面的顶部。
标签: ios objective-c wkwebview