Отображение связанного изображения () в UIWebView на iPhone не работает - PullRequest
2 голосов
/ 10 ноября 2010

У меня проблемы с отображением изображения в UIWebView.

  • Я получаю 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-содержимого (например, с помощью функции gtm_stringByEscapingForHTML), весь лот экранируется, и UIWebview просто отображает html в виде строки html. Например:

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

Я действительно имел обыкновение видеть изображения, но не могу доказать, что что-то изменилось на заднем плане. Я ничего не изменил в интерфейсе.

Наверное, мои вопросы:

  1. Кто-нибудь может пролить больше света на потенциальную причину этой проблемы?
  2. Может кто-нибудь предложить исправление, которое я могу применить на переднем конце, чтобы обойти эту проблему?

Большое спасибо заранее за вашу помощь.

Ответы [ 2 ]

1 голос
/ 11 ноября 2010

Проблема действительно была с задним числом.Я выполнил несколько тестов и обнаружил, что изображения работают, когда размещены на моем собственном сервере.Затем я узнал, что для мобильного Safari серверная часть перенаправляет запросы на мобильный сайт.Это означало, что запросы на изображения на их сервере, поступающие с мобильного WebKit, перенаправлялись на html-страницу.Конечно, html-страница не является допустимым src для тега img ...

0 голосов
/ 10 ноября 2010

Неправильная ссылка, подобная этой, не гарантирует работу в браузере. Отображение неработающей ссылки ("?") Является подходящим ответом. Я думаю, что проблема в бэкэнде, и вы не должны получать ссылки без экранированных символов в вашем html-фиде. Если у вас нет никакого контроля над этим, все, что вы можете сделать, это проанализировать входящий html для тегов <img> и <a>, заменив любые атрибуты 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];}

Это загружает изображение без проблем. Возможно, здесь что-то еще происходит ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...