【问题标题】:Displaying a linked image (<img src=.../>) in a UIWebView on iPhone not working在 iPhone 上的 UIWebView 中显示链接图像 (<img src=.../>) 不起作用
【发布时间】:2023-03-02 21:53:01
【问题描述】:

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

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

  • 在这个内容中有一个&lt;img src=.../&gt;标签。

  • 将此内容加载到 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. 谁能建议我可以在前端应用的修复程序来解决此问题?

非常感谢您的帮助。

【问题讨论】:

  • 您的 HTML 中是否只有 UTF-8 字符,或者是否有一些奇怪的东西,如重音字符滑入?

标签: iphone html ios uiwebview image


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    不保证这样的格式错误的链接在浏览器中有效。显示断开的链接(“?”)图像是适当的响应。我认为问题出在后端,您不应该在 html 提要中获取没有转义字符的链接。如果您对此没有任何控制权,您所能做的就是解析&lt;img&gt;&lt;a&gt; 标记的传入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];}
    

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

    【讨论】:

    • 感谢托扎尔。当我将未转义的链接粘贴到浏览器中(使用波浪号、逗号等)时,它确实向我显示了图像。这进一步增加了我的困惑......
    • 是的,我想我刚刚测试过,但我忘了保存我的配置文件等等。 Chrome 能够加载图像并跟踪带有类似图像标签的链接,但这并不意味着 UIWebView 必须...
    • 这实际上是我在项目中可能不得不处理的一个问题。我会看看我们的网站如何处理奇怪的文件名,看看这是否会影响我的 UIWebViews。如果它不能正常工作,我们将在同一条船上!
    • 感谢托扎尔。看看你在项目中想出什么会很有趣。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    • 2021-04-27
    • 2016-09-27
    相关资源
    最近更新 更多