Как вы видите ошибки в UIWebView loadHTMLString :? - PullRequest
4 голосов
/ 06 июня 2011

Если Apple обнаруживает ошибки во время loadHTMLString, они выбрасывают их в отдельный поток без трассировки стека (в Xcode4) и без вывода на консоль.

Как вы слушаете эти ошибки, отлаживаете их и, в конечном счете, реагируете на них?

(К вашему сведению - я использую loadHTMLString, потому что мне нужно загрузить сочетание локальных и удаленных ресурсов, и этот метод обеспечивает единственный простой способ сделать это, AFAIAA)

РЕДАКТИРОВАТЬ: ... извините, чтобы прояснить: Apple может столкнуться с различными ошибками. Например, если он получит ошибку при попытке загрузки встроенного ресурса (например, файла CSS), он не будет учитываться как «страница не загружена», фактически он сообщит об успешной загрузке страницы.

ИМХО ... это правильное поведение: если HTML-парсер может восстановиться после ошибки, я не хочу, чтобы "страница не загрузилась". Но ошибки все еще важны - они говорят нам, почему страница отображает, например. без фонового изображения или с разбитыми изображениями.

Ответы [ 3 ]

3 голосов
/ 31 мая 2013

В целях отладки вы можете подключить Safari Web Inspector. Для этого:

  1. Убедитесь, что у вас установлена ​​версия Safari, поддерживающая SWI - так, по крайней мере, Safari 6 в Mac OS X 10.7.4.
  2. На устройстве (или симуляторе), которое вы используете для тестирования приложения, включите «Настройки»> «Safari»> «Дополнительно»> «Веб-инспектор».
  3. Запустите Safari.
  4. Включите Safari> «Настройки»> «Дополнительно»> «Показать меню разработки в строке меню».
  5. Запустите приложение и, когда веб-просмотр, с которым вы работаете, перейдите в Safari> Разработка> [имя устройства или «симулятор iPhone»]> [веб-адрес - он будет указан под именем приложения]

Он покажет вам, какие статические файлы были загружены страницей. (Если вы хотите видеть ошибки Javascript, вам нужно прикрепить их как обычно, установить точку останова для всех исключений - в SWI, а не только в Xcode! - затем выберите страницу корневого уровня и CMD + R, чтобы перезагрузить ее.)

Насколько я могу судить, единственный способ сделать это программно (например, если вы хотите повторить неудачную загрузку страницы) - это использовать подкласс NSURLProtocol.

1 голос
/ 06 июня 2011

Хотя я не использовал loadHTMLString:, вы должны иметь возможность зарегистрировать свой контроллер как UIWebViewDelegate и реализовать метод – webView:didFailLoadWithError:, который должен вызываться всякий раз, когда он выходит из строя.

0 голосов
/ 06 июня 2011

Назначьте делегата вашему веб-представлению и используйте этот метод в делегате.

 - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
  {

       NSLog(@"Error is %@",error);

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