WKWebView goBack将我带到本地html页面的顶部



我有一些html页面作为应用程序内帮助,我使用WKWebView来显示它们,其中包括一个"背面";按钮调用CCD_ 1。

一切都很顺利,除了后退按钮总是把你带到上一个本地html页面的最顶部(而不是你点击的链接所在的页面的滚动位置(,尽管如果你按照远程内容的进一步链接并使用";背面";从一个远程页面转到上一个远程页。

我已经删除了所有额外的调试内容,比如后期导航等,所以目前我只是打电话给:

[webView loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"help" withExtension:@"html"]]];

然后只需[webView goBack],然后返回页面顶部。不管你是跟随一个链接到另一个内部html还是外部页面。但是,正如我所说,如果你跟随一个链接到一个外部页面,然后又跟随另一个外部页,第一个返回会将你带到第一个外部页的正确位置。

有什么想法吗?它让浏览内部html变得很烦人。

编辑:好吧,这可能与实际的html有关——有一个页面是back工作的,试图找出区别。<body>之前的所有内容都是相同的,并且所有页面都通过w3.org html4过渡验证。

这是一个初步的答案,如果有人能改进它或解释其机制,我将不胜感激。似乎";goBack";如果上一页的内容中有一个元素的宽度大于Web视图试图在其中流动内容的原始宽度,则会将您带到该页的顶部。例如,在我的情况下,由于我使用的是动态类型字体,对于某些文本大小,某些页眉和某些链接太长。立即的解决方案是添加body {word-wrap:break-word;}。这有点像";锤子";解决方案,因为它确实会产生一些意想不到的后果,所以我正在努力寻找替代方案(目前正在使用viewport元,以防它有帮助(。

我还没有找到一种方法来修复loadHTMLStringgoBack行为——当我第一次尝试将字符串写入文件时,goBack确实有效,但我有其他问题(无法再遵循捆绑包中html文件的链接(。

最新更新