我在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"/>......"
我实际上曾经能够看到图像,但无法证明后端有什么变化。我没有改变前端的任何东西。
我想我的问题是:
非常感谢您的帮助。
答案 0 :(得分:1)
问题确实在后端。我进行了多次测试,发现托管在我自己的服务器上时图像有效。然后我发现,对于移动版Safari,后端将请求重定向到移动网站。这意味着来自移动WebKit的服务器上的图像请求被重定向到html页面。当然,html页面不是img标签的有效src ...
答案 1 :(得分:0)
此类格式错误的链接无法保证在浏览器中正常运行。显示断开的链接(“?”)图像是一个适当的响应。我认为问题出在后端,你不应该在你的html feed中获得没有转义字符的链接。如果您对此没有任何控制权,那么您所能做的只是解析<img>
和<a>
标记的传入html,并使用转义替换所有src
或href
属性字符,甚至不能保证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];}
这样可以毫无问题地加载图像。也许还有其他事情要发生......