Javascript 停止在UIWebView中加载图像
我有一个网站,我希望在UIWebView中加载,但它充满了图片,需要花费很多时间才能加载。这些图像毫无用处,只会降低iPhone的可用性。我没有自己的网站,所以我不能改变网站的实际代码 该网页通过ASP.NET和AJAX(需要外部文件)大量链接到web,因此我认为不可能让它加载HTML字符串 我想完全停止加载图像。那么我如何阻止它们呢?以某种方式将HTML代码更改为加载,或者阻止图像加载?我有三个想法Javascript 停止在UIWebView中加载图像,javascript,iphone,uiwebview,webview,Javascript,Iphone,Uiwebview,Webview,我有一个网站,我希望在UIWebView中加载,但它充满了图片,需要花费很多时间才能加载。这些图像毫无用处,只会降低iPhone的可用性。我没有自己的网站,所以我不能改变网站的实际代码 该网页通过ASP.NET和AJAX(需要外部文件)大量链接到web,因此我认为不可能让它加载HTML字符串 我想完全停止加载图像。那么我如何阻止它们呢?以某种方式将HTML代码更改为加载,或者阻止图像加载?我有三个想法 使用代理来过滤HTML 自己过滤HTML 先下载 只需下载html并使用文件://URL加载即
UIWebView
的NSURLRequest
。你提到的博客使用了NSURLCache
,我认为这是一个很好的起点:
您是否尝试将NSURLCache子类化,然后覆盖-(NSURLCacheResponse*)缓存响应请求:(NSURLRequest*)请求
如果要避免执行请求,需要返回一些内容(作为NSURLCachedResponse
)。例如,您可以获取应用程序中静态定义的图像(可能是大小为0,0的PNG)
如果返回nil
,将执行请求
我使用这种方法强制UIWebView
使用本地缓存填充。请参见我的详细答案:
错误的第一个答案:/ 将自己作为代理添加到
UIWebView
(UIWebView代理
)
对于UIWebView
尝试加载的每个图像,delagate将调用以下回调:
-(BOOL)webView:(UIWebView*)webView应该加载请求:(NSURLRequest*)请求导航类型:(UIWebView导航类型)导航类型
只需检查请求是否与您希望避免下载的图像相关。在这种情况下,只需将NO
返回到此回调:图像将不会加载到UIWebView
中
通过使用这种方法,服务器端不需要任何更改。我建议尝试另一种方法:
使用webView委托的
webView:shouldStartLoadWithRequest:navigationType:
在尝试加载图像时返回否。您可以在任何时候停止webView加载时使用以下代码行
[webView停止加载] 问题是,它是一系列动态加载的页面,其内容基于先前页面上输入的内容。所以下载并链接它们不是一个选项。然后我会使用一个过滤代理-这非常类似于在你的网络浏览器上使用广告拦截器-我该如何实现这一点所以我发现了,但我完全被它所控制,无法让它工作……有什么帮助吗?我试过了,但它只在加载页面时调用它。没有一个页面元素(图像、JS、CSS…)你是对的,我在答案中描述了另一种方法。干杯,你的回答是真的。我的要求是,当在webview中加载任何url时,它只显示文本而不显示图像。如何在webview请求中获取图像url并停止它?您的回答是正确的。我的要求是,当在webview中加载任何url时,它只显示文本而不显示图像。如何在webview请求中获取图像url并停止它。