2

我们在 iPhone 应用程序中使用加密网页,并在 webView:shouldStartLoadWithRequest: 方法中拦截这些调用(例如单击链接时)以获取文件路径,将数据解密为原始 html 字符串,然后在webView(显然在 webView:shouldStartLoadWithRequest: 中返回 YES)。

我们目前遇到的问题(在解决了其他问题之后,比如必须实现我们自己的后退/前进状态机、负责滚动到最后一个位置等)是 webView在调用 webViewDidFinishLoad:之后似乎加载了图像:是我们向下滚动到#anchor(如果有)的地方(我们必须实现的另一件事,因为当我们使用 loadHTMLString: 解密后它不能正常工作)。

当我们使用 javascript 调用 ("window.scrollTo(0, document.getElementById('%@').offsetTop") 向下滚动时,它通常会超出应有的高度;看起来就像它计算了 .加载图像之前的y 距离。

有没有办法回到 webView 完全加载页面的方式,然后滚动到 #anchors 或以前的 .y 位置?

这有点难以解释,可能与 UIWebView 加载、缓存和呈现页面的方式中的复杂细节有关。对此的一些启示和一些清晰的思考将不胜感激。

4

1 回答 1

0

我已经成功使用了锚标签,例如:

<a name='top'></a>
   ...
<a name='chap1'></a>
<a href='#top'>
   <h1>
      <img style='position:relative; top:2px; padding-right:5px;' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHVQTFRFAgICwMDAAwMDpKSk9/f3+/v7cHBwZmZmZGRkERER/v7+p6ensrKy0tLSXl5eVlZWaGhoW1tbYGBglpaWxsbGvb29sbGxY2NjcXFxVVVVwcHBtLS0bW1tWlpacnJyDw8P/f39GhoaCwsLAQEBycnJ////AAAA7TukbQAAAGxJREFUeNpkz+kSgjAMBODYVi6VG1FUrjR5/0dE1ME27M9vMrMbIBEg9rLBPQUPSkOBCxElR7r9oaVzbTX1+IOXuQ6PZtZjiB+A52nig+W4yuF7oRS/ARnBqV3B27GDToK9iOlZIcB5TmQRYAB6fSF0/d87AgAAAABJRU5ErkJggg==' alt='arrow-up.png' />
      Chapter 1
   </h1>
</a>...

您的图像是否以 Base64 编码并直接嵌入到您刚刚未加密的图像中NSString*

于 2009-05-26T10:59:50.140 回答