如何仅加载 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;
}
我正在访问的网站上的所有图片都有 jpg
或 png
扩展名,为了方便起见,我还包括了 jpeg
显然很容易extended 仅适用于任何扩展,包括但不限于图像。
如果图片 URL 中有查询字符串等,您可以使用 isRequestImage:
方法轻松过滤掉它,我只是没有,所以我不需要它。
我试图通过将 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;
}
我正在访问的网站上的所有图片都有 jpg
或 png
扩展名,为了方便起见,我还包括了 jpeg
显然很容易extended 仅适用于任何扩展,包括但不限于图像。
如果图片 URL 中有查询字符串等,您可以使用 isRequestImage:
方法轻松过滤掉它,我只是没有,所以我不需要它。