停止在UIWebView中加载图像

时间:2010-04-08 09:40:29

标签: javascript iphone uiwebview webview

我有一个网站,我希望在UIWebView中加载,但它充满了图像,需要很长时间才能加载。这些图像毫无用处,只会降低iPhone的可用性。我没有网站,所以我无法更改网站的实际代码。

网页与ASP.NET和AJAX(需要外部文件)密切联系到网页,因此我不认为可以加载HTML字符串。

我想完全阻止图像加载。那我怎么阻止他们?以某种方式更改HTML代码作为其加载,或阻止图像被加载?

4 个答案:

答案 0 :(得分:2)

我有三个想法。

  1. 使用代理过滤HTML
  2. 自己过滤HTML 首先下载
  3. 只需下载html并使用file:// URL加载它。这将是最多的 可能会阻止图像引用 从解决 - 虽然它会 到处都是丑陋的广场

答案 1 :(得分:1)

UIWebView委托方法不起作用,你是对的!新答案:

是的,您需要更深层次地抓住来自NSURLRequest的{​​{1}}。您所指的博客使用UIWebView,我认为这是一个很好的起点:

您是否尝试将NSURLCache子类化,然后覆盖NSURLCache

如果您想避免执行请求,则需要返回一些内容(作为-(NSURLCacheResponse*) cachedResponseForRequest:(NSURLRequest*) request)。例如,您可以获取在应用中静态定义的图像(可能是大小为0,0的PNG)。

如果您返回NSURLCachedResponse,则会执行请求。

我正在使用这种方法强制nil填充本地缓存。请在此处查看我的详细解答:

How to save the content in UIWebView for faster loading on next launch?


错误的第一个回答:/

将自己添加为UIWebViewUIWebView)的委托。

对于UIWebViewDelegate尝试加载的每个图像,delagate会调用以下回调:

UIWebView

只需检查请求是否与您要避免下载的图像相关。在这种情况下,只需将-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType返回此回调:图片将不会加载到NO

通过使用此方法,服务器端无需进行任何更改。

答案 2 :(得分:0)

我建议另外一个选择:

使用WebView委托的webView:shouldStartLoadWithRequest:navigationType:在尝试加载图片时返回NO。

答案 3 :(得分:0)

您可以使用以下代码行,每当您想要停止webView加载时。

[webView stopLoading];