- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
//将url转换为string
NSString *requestString = [[request URL] absoluteString];
// NSLog(@"requestString is %@",requestString);
//hasPrefix 判断创建的字符串内容是否以pic:字符开始
if ([requestString hasPrefix:@"myweb:imageClick:"]) {
NSString *imageUrl = [requestString substringFromIndex:@"myweb:imageClick:".length];
// NSLog(@"image url------%@", imageUrl);
[[SDWebImageDownloader sharedDownloader] downloadImageWithURL:[NSURL URLWithString:imageUrl] options:SDWebImageDownloaderLowPriority progress:nil completed:^(UIImage *image, NSData *data, NSError *error, BOOL finished) {
if (error)
{
DSLog(@"%@",error);
}else{
if (finished==YES) {
UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
}
}
}];
return NO;
}
return YES;
}
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
//js方法遍历图片添加点击事件 返回图片个数
static NSString * const jsGetImages =
@"function getImages(){\
var objs = document.getElementsByTagName(\"img\");\
for(var i=0;i<objs.length;i++){\
objs[i].οnclick=function(){\
document.location=\"myweb:imageClick:\"+this.src;\
};\
};\
return objs.length;\
};";
[webView stringByEvaluatingJavaScriptFromString:jsGetImages];//注入js方法
//注入自定义的js方法后别忘了调用 否则不会生效(不调用也一样生效了,,,不明白)
NSString *resurlt = [webView stringByEvaluatingJavaScriptFromString:@"getImages()"];
NSLog(@"---调用js方法--%@ %s jsMehtods_result = %@",self.class,__func__,resurlt);
if (self.downWebBlock) {
self.downWebBlock();
}
//此高度有问题
//htmlHeight=webView.scrollView.contentSize.height;
// [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '250%'"];
CGSize actualSize = [webView sizeThatFits:CGSizeZero];
//float height=[[webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"]floatValue];
//DSLog(@"-=-=-=-=%f",height);
if (self.heightBlock) {
self.heightBlock(actualSize.height);
}
isloadData=YES;
}
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError*)error contextInfo:(void*)contextInfo
{
if (error){
NSLog(@"Error");
}else {
NSLog(@"OK");
}
}