我试图通过将网址加载到屏幕外网页视图并使用WebScriptObject
及其evaluateWebScript:
方法通过Javascript进行交互来模仿网站上的真实用户行为。网页上有很多图像,我不想加载任何图像,因为我不需要它们,它们会消耗太多带宽并减慢加载时间。如何让Web视图加载所有内容以便在窗口上执行Javascript(HTML JS和CSS文件及其依赖项,如果有的话),但是阻止加载任何媒体?
答案 0 :(得分:2)
经过一番挣扎,我找到了解决问题的简单方法。如果图像网址的格式正确(例如以#结尾)及其各自的扩展名,则此方法有效:
-(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
它显然可以很容易地扩展到任何扩展,包括但不限于图像。
如果图片网址中有查询字符串等,您可以使用isRequestImage:
方法轻松过滤,我只是没有,所以我不需要它。