我们在 iPhone 应用程序中使用加密网页,并在 webView:shouldStartLoadWithRequest: 方法中拦截这些调用(例如单击链接时)以获取文件路径,将数据解密为原始 html 字符串,然后在webView(显然在 webView:shouldStartLoadWithRequest: 中返回 YES)。
我们目前遇到的问题(在解决了其他问题之后,比如必须实现我们自己的后退/前进状态机、负责滚动到最后一个位置等)是 webView在调用 webViewDidFinishLoad:之后似乎加载了图像:是我们向下滚动到#anchor(如果有)的地方(我们必须实现的另一件事,因为当我们使用 loadHTMLString: 解密后它不能正常工作)。
当我们使用 javascript 调用 ("window.scrollTo(0, document.getElementById('%@').offsetTop") 向下滚动时,它通常会超出应有的高度;看起来就像它计算了 .加载图像之前的y 距离。
有没有办法回到 webView 完全加载页面的方式,然后滚动到 #anchors 或以前的 .y 位置?
这有点难以解释,可能与 UIWebView 加载、缓存和呈现页面的方式中的复杂细节有关。对此的一些启示和一些清晰的思考将不胜感激。