在iPhone上的UIWebView中显示链接图像(<img src=".../"/>)不起作用

时间:2010-11-10 13:54:24

标签: iphone html ios uiwebview image

我在UIWebView中显示图片时遇到问题。

  • 我从Feed中检索html内容。

  • 在此内容中有一个<img src=.../>标记。

  • 将此内容加载到UIWebview中,图像不会显示,只显示丢失的图像“?”代替。

似乎src中图像的链接包含一些有趣的字符,需要对它们进行转义才能获得正确的图像。

例如,在Feed中,我得到以下内容不起作用:

<img src="http://www.somedomain.com/0,,10268~9189636,00-1.jpg" />

但是,如果我使用以下转义链接,它确实有效:

<img src="http://www.somedomain.com/0%2C%2C10268%7E9189636%2C00-1.jpg" />

然后出现问题,如果我转义html内容(例如使用Google gtm_stringByEscapingForHTML函数),整个批次都会被转义,UIWebview最终会将html显示为html字符串。例如:

"<p>Hello this is a test</p><img src="someimagesource.jpg"/>......"

我实际上曾经能够看到图像,但无法证明后端有什么变化。我没有改变前端的任何东西。

我想我的问题是:

  1. 任何人都可以了解这个问题的潜在原因吗?
  2. 任何人都可以建议我可以在前端申请解决此问题吗?
  3. 非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

问题确实在后端。我进行了多次测试,发现托管在我自己的服务器上时图像有效。然后我发现,对于移动版Safari,后端将请求重定向到移动网站。这意味着来自移动WebKit的服务器上的图像请求被重定向到html页面。当然,html页面不是img标签的有效src ...

答案 1 :(得分:0)

此类格式错误的链接无法保证在浏览器中正常运行。显示断开的链接(“?”)图像是一个适当的响应。我认为问题出在后端,你不应该在你的html feed中获得没有转义字符的链接。如果您对此没有任何控制权,那么您所能做的只是解析<img><a>标记的传入html,并使用转义替换所有srchref属性字符,甚至不能保证100%的工作时间。

编辑:我能够使用这些包含逗号的图像源属性。

- (void)viewDidLoad {
[super viewDidLoad];
//imageWV is a UIWebView belonging to this UIViewController
NSString * test = @"test test test<img src=\"http://my.domain.com/~tilde-directory/images/namewith,,commas.png\"></img>";
[imageWV loadHTMLString:test baseURL:nil];}

这样可以毫无问题地加载图像。也许还有其他事情要发生......