Остановить загрузку изображений в UIWebView - PullRequest
3 голосов
/ 08 апреля 2010

У меня есть веб-сайт, который я хочу загрузить в UIWebView, но он полон изображений и загружается годами. Изображения бесполезны и служат только для снижения удобства использования iPhone. Я не являюсь владельцем веб-сайта, поэтому не могу изменить фактический код сайта.

Веб-страница тесно связана с Интернетом с помощью ASP.NET и AJAX (нужны внешние файлы), поэтому я не думаю, что она может загружать строку HTML.

Я хочу остановить загрузку изображений в целом. Так как мне их заблокировать? Как-нибудь изменить HTML-код при загрузке или заблокировать загрузку изображений?

Ответы [ 4 ]

2 голосов
/ 08 апреля 2010

У меня есть 3 мысли.

  1. Используйте прокси для фильтрации HTML
  2. Отфильтруйте HTML самостоятельно, сначала загрузив его
  3. Просто скачайте HTML и загрузитеэто с помощью файла: // URL.Это, скорее всего, предотвратит разрешение ссылок на изображения - хотя и повсюду оставит некрасивые квадраты
1 голос
/ 08 апреля 2010

Подход делегата UIWebView не работает, вы правы! новый ответ:

Правильно, вам нужно пройти на один уровень глубже, чтобы поймать NSURLRequest, идущий от UIWebView. Блог, на который вы ссылаетесь, использует NSURLCache, и я думаю, что это хорошая отправная точка:

Вы пытались создать подкласс NSURLCache, а затем переопределить -(NSURLCacheResponse*) cachedResponseForRequest:(NSURLRequest*) request

Если вы хотите избежать выполнения запроса, вам нужно что-то вернуть (как NSURLCachedResponse). Например, вы можете получить изображение, которое статически определено в вашем приложении (возможно, PNG с размером 0,0).

Если вы вернете nil, запрос будет выполнен.

Я использую этот подход, чтобы заставить UIWebView заполняться локальным кэшем. Смотрите мой подробный ответ об этом здесь:

Как сохранить содержимое в UIWebView для более быстрой загрузки при следующем запуске?


Неправильный первый ответ: /

Добавьте себя в качестве делегата на UIWebView (UIWebViewDelegate).

Для каждого изображения, которое UIWebView пытается загрузить, расцепитель вызывает следующий обратный вызов:

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

Просто проверьте, относится ли запрос к изображению, которое вы хотите избежать загрузки. В таком случае просто верните NO к этому обратному вызову: изображение не будет загружено в UIWebView.

При использовании этого подхода никаких изменений на стороне сервера не требуется.

0 голосов
/ 28 марта 2013

Вы можете использовать следующую строку кода, всякий раз, когда вы хотите остановить загрузку webView.

[webView stopLoading];

0 голосов
/ 08 мая 2012

Я бы предложил другой вариант:

с использованием webView:shouldStartLoadWithRequest:navigationType: делегата WebView для возврата NO при попытке загрузить изображение.

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