UIWebView 不会从协议相对 URL 加载图像


  1. 使用UIWebView制作一个应用程序,打开具有协议相关样式的网页&图像,例如<img src="//example.com/image.png">(http或https的示例(。

  2. 通过自定义NSURLConnection覆盖页面加载过程。

结果:它不会显示图像!尽管如此,Safari和其他浏览器显示它们是正确的。。。

我检查了在WebView中打开的页面,发现那里有奇怪的请求。它们看起来像普通的URL,但使用applewebdata方案,例如applewebdata://art-u1.infcdn.net/articles_uploads/2/2586/thumb/3Dtouch%20Main-665x.png。耶!它不知道相对URL //art-u1.infcdn.net/articles_uploads/2/2586/thumb/3Dtouch%20Main-665x.png的"基本"方案,并给出了苹果的伪方案。所以…问题就在这里:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    [m_webView loadData:webdata
               MIMEType:@"text/html"
       textEncodingName:@"UTF-8"
                baseURL:nil]; /// WTF!
}

解决方案:只需在启动请求时将初始URL保存到某个m_currentPageUrl,然后将其传递到它应该位于的位置。:(

最新更新