2010-11-10 79 views
2

我在UIWebView中显示图像时遇到问题。在iPhone上的UIWebView中显示链接的图像(<img src=.../>)无法正常工作

  • 我从提要中检索html内容。

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

  • 将此内容加载到UIWebview中,图像不显示,仅显示缺少的图像“?”代替。

似乎src =中的图像链接包含一些有趣的字符,并且这些需要转义才能获得正确的图像。

例如,在饲料中我得到这不工作的情况如下:

<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. 任何人都可以提出一个解决方案,我可以申请在前端解决这个问题?

非常感谢您的帮助。

+0

你在HTML中是否只有UTF-8字符,或者是否有一些奇怪的东西,比如重音字符滑入? – Tozar 2010-11-10 16:22:30

回答

1

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

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];} 

这会加载图像没有问题。也许这里还有其他的事情......

+0

谢谢Tozar。当我将非转义的链接粘贴到浏览器中(使用波浪号,逗号等)时,它会向我显示图像。这进一步增加了我的困惑... – 2010-11-10 14:51:51

+0

是的,我想我只是测试过,但我忘了保存我的配置文件,什么不是。 Chrome浏览器能够加载图像并按照链接的图像标签,但这并不意味着UIWebView必须... – Tozar 2010-11-10 14:54:29

+0

这实际上是我可能不得不在我的项目中处理的问题。我会看看我们的网站如何处理奇怪的文件名,看看是否会影响我的UIWebViews。如果它行不通,我们将在同一条船上! – Tozar 2010-11-10 15:05:32