【问题标题】:Stop Images from loading in UIWebView停止在 UIWebView 中加载图像
【发布时间】:2011-02-05 15:07:36
【问题描述】:

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

该网页通过 ASP.NET 和 AJAX(需要外部文件)大量链接到网络,所以我认为它不可能加载 HTML 字符串。

我想完全停止加载图像。那么我该如何阻止它们呢?以某种方式在加载时更改 HTML 代码,或者阻止加载图像?

【问题讨论】:

    标签: javascript iphone uiwebview webview


    【解决方案1】:

    我有 3 个想法。

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

    【讨论】:

    • 问题是,它是一系列动态加载的页面,其内容基于之前页面上输入的内容。所以下载它们并链接它们不是一种选择。
    • 然后我会使用过滤代理 - 它非常类似于在您的网络浏览器上使用广告拦截器
    • 我将如何实施?
    • icab.de/blog/2009/08/18/… - 所以我发现了,但我完全被它分阶段,无法让它工作......有什么帮助吗?
    【解决方案2】:

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

    是的,您需要更深入一层才能捕获来自UIWebViewNSURLRequest。您所指的博客使用了NSURLCache,我认为这是一个很好的起点:

    你有没有尝试继承 NSURLCache,然后覆盖 -(NSURLCacheResponse*) cachedResponseForRequest:(NSURLRequest*) request

    如果你想避免请求被执行,你需要返回一些东西(作为NSURLCachedResponse)。例如,您可以获取在您的应用程序中静态定义的图像(可能是大小为 0,0 的 PNG)。

    如果你返回nil,请求就会被执行。

    我正在使用这种方法来强制UIWebView 填充本地缓存。在此处查看我对此的详细回答:

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


    第一个答案错误:/

    将自己添加为UIWebView (UIWebViewDelegate) 的代表。

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

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

    只需检查请求是否与您要避免下载的图像相关。在这种情况下,只需将NO 返回到此回调即可:图像不会在UIWebView 中加载。

    通过使用这种方法,服务器端不需要进行任何更改。

    【讨论】:

    • 我试过了,但它只在页面本身被加载时调用。没有任何页面元素通过那里(图像、JS、CSS...)
    • 你说得对,我在答案中描述了另一种方法。干杯。
    • 你的回答是对的。我的要求是在 webview 中加载任何 url 时,它只显示文本而不显示图像。如何在 webview 请求中获取 IMAGE url 并停止它
    【解决方案3】:

    我建议尝试另一种选择:

    使用 WebView 代理的webView:shouldStartLoadWithRequest:navigationType: 在尝试加载图像时返回 NO。

    【讨论】:

    • 你的回答是对的。我的要求是在 webview 中加载任何 url 时,它只显示文本而不显示图像。如何在 webview 请求中获取 IMAGE url 并停止它。
    【解决方案4】:

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

    [webView 停止加载];

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-22
      • 2012-08-19
      • 1970-01-01
      • 2015-12-07
      • 2012-04-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多