如何仅加载 HTML+CSS+JS 并停止在 Cocoa WebView 上加载图像

How to load only HTML+CSS+JS and stop loading images on Cocoa WebView

我试图通过将 URL 加载到屏幕外 Web 视图并使用 WebScriptObject 及其 evaluateWebScript: 通过 Javascript 进行交互来模仿网站上的真实用户行为方法。网页上有很多图片,我不想加载任何图片,因为我不需要它们,它们会占用太多带宽并减慢加载时间。如何让 Web 视图加载所有内容以便在 window(HTML JS 和 CSS 文件及其依赖项(如果有)上执行 Javascript,但阻止加载任何媒体?

经过一番努力,我找到了一种非常简单的方法来解决我的问题。如果图像 URL 的格式正确(例如以其结尾)及其各自的扩展名,则此方法有效:

-(NSURLRequest *)webView:(WebView *)sender resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(WebDataSource *)dataSource{
    BOOL isRequestImage = [self isRequestImage:request];
    if(isRequestImage){
        return nil; //don't bother loading images
    }
    ...
}

其中:

-(BOOL)isRequestImage:(NSURLRequest*)request{
    NSString *absoluteString = [request.URL.absoluteString lowercaseString];
    if([absoluteString hasSuffix:@".png"] || [absoluteString hasSuffix:@".jpg"] || [absoluteString hasSuffix:@".jpeg"]){
        return YES;
    }
    return NO;
}

我正在访问的网站上的所有图片都有 jpgpng 扩展名,为了方便起见,我还包括了 jpeg 显然很容易extended 仅适用于任何扩展,包括但不限于图像。

如果图片 URL 中有查询字符串等,您可以使用 isRequestImage: 方法轻松过滤掉它,我只是没有,所以我不需要它。