WKWebview 获取网页高度,图片点击查看,网页链接点击

来源:互联网 发布:数据可视化图片 编辑:程序博客网 时间:2024/05/23 00:55

#import <WebKit/WebKit.h>

签协议 WKNavigationDelegate

@property (nonatomic,strong)WKWebView *newsWebView;



- (void)createView{

    self.newsWebView = [[WKWebViewalloc]init];

    self.newsWebView.frame =CGRectMake(0,0,WIDTH,HEIGHT);

    self.newsWebView.navigationDelegate = self;

    self.newsWebView.scrollView.scrollEnabled = NO;

   /// 添加监听网页高度,,将网页作为tableview的头视图

   [self.newsWebViewaddObserver:selfforKeyPath:@"scrollView.contentSize"options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOldcontext:@"DJWebKitContext"];

    ///

}


#pragma mark 网页开始加载

- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation{

   

}

#pragma mark 网页加载完成

- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{

     /// 给网页中的图片添加点击方法

    [selfaddImgClickJS];

  

}

/// 给网页中的图片添加点击方法

- (void)addImgClickJS {

    //添加图片点击的回调

    [self.newsWebViewevaluateJavaScript:@"function registerImageClickAction(){\

     var imgs = document.getElementsByTagName('img');\

     for(var i=0;i<imgs.length;i++){\

     imgs[i].customIndex = i;\

     imgs[i].onclick=function(){\

     window.location.href=''+this.src;\

     }\

     }\

     }" completionHandler:nil];

    [self.newsWebViewevaluateJavaScript:@"registerImageClickAction();"completionHandler:nil];

///// 所有图片点击滑动查看添加以下代码 单图片查看不需要添加

[self.newsWebViewevaluateJavaScript:@“function getImages(){
     var imgs = document.getElementsByTagName('img');
     var imgScr = '';
     for(var i=0;i<imgs.length;i++){
     if (i == 0){
     imgScr = imgs[i].src;
     } else {
     imgScr = imgScr +'***'+ imgs[i].src;
     }
     };
     return imgScr;
     };
” 
completionHandler:nil];//注入js方法
    [
self.newsWebViewevaluateJavaScript:@"getImages()"completionHandler:^(id_Nullable result,NSError *_Nullable error) {
       
if (!error) {
           
self.imagesArr = result?[NSMutableArrayarrayWithArray:[resultcomponentsSeparatedByString:@"***"]]:
           
nil;
        }
    }];


}

#pragma mark 监听网页的内容高度

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{

    if (!self.newsWebView.isLoading) {

        if([keyPathisEqualToString:@"scrollView.contentSize"]){

            self.newsWebView.frame = CGRectMake(0,0,WIDTH,self.newsWebView.scrollView.contentSize.height);

            self.newsTableView.tableHeaderView = self.newsWebView;

        }

    }

}

#pragma mark 页面加载失败时调用

- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation {

}

#pragma mark 在发送请求之前,决定是否跳转

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{

    NSString *path = [navigationAction.request.URL.absoluteStringstringByRemovingPercentEncoding];

//    NSLog(@"-=-=-==-=%@",path);

    /// 主页面加载

    if ([pathisEqualToString:@"about:blank"]) {

        decisionHandler(WKNavigationActionPolicyAllow);

    }else{

        /// 图片的点击处理

        if ([pathhasSuffix:@".png"]||[pathhasSuffix:@".jpg"]||[pathhasSuffix:@".jpeg"]) {

            //// 查看图片内容(pod "MWPhotoBrowser", :git =>'https://github.com/EvoIos/MWPhotoBrowser.git', :commit =>'de697e101195557ddca85661ebb266fd3f10776c'

            //// 单个图片查看

            MWPhoto *photo = [[MWPhotoalloc]initWithURL:[NSURLURLWithString:path]];

            _photosBrowser = [[MWPhotoBrowseralloc]initWithPhotos:@[photo]];

            /// 所有图片滑动查看    用下面一段替换上面两行

NSMutableArray *photoarr = [NSMutableArrayarray];
           
for (NSString *urlinself.imagesArr) {
               
MWPhoto *photo = [[MWPhotoalloc]initWithURL:[NSURLURLWithString:url]];
                [photoarr
addObject:photo];
            }
           
_photosBrowser = [[MWPhotoBrowseralloc]initWithPhotos:photoarr];
           
if ([self.imagesArrcontainsObject:path]) {
               
NSInteger k = [self.imagesArrindexOfObject:path];
                [
_photosBrowsersetCurrentPhotoIndex:k];
            }
else{
                [
_photosBrowsersetCurrentPhotoIndex:0
];
            }


            UINavigationController *nan = [[UINavigationControlleralloc]initWithRootViewController:_photosBrowser];

            _photosBrowser.navigationItem.leftBarButtonItem = [[UIBarButtonItemalloc]initWithImage:[UIImageimageNamed:@"navBack"]style:UIBarButtonItemStylePlaintarget:selfaction:@selector(PhotobackAction)];

            nan.modalTransitionStyle =UIModalTransitionStyleCrossDissolve;

            [selfpresentViewController:nananimated:YEScompletion:^{

                

            }];

            /// 其他网页连接的处理

        }elseif ([FLGPanduanToolisWebURL:path]){

            if ([pathhasPrefix:@"http://cznews.cz001.com.cn/html/wap/detail.php?pid="]) {

                FLGNewsDetailViewController *detail = [[FLGNewsDetailViewControlleralloc]init];

                detail.newsID = [pathsubstringFromIndex:51];

                [self.navigationControllerpushViewController:detailanimated:YES];

            }else{

                //// pod 'TOWebViewController','~> 2.2.6'

                TOWebViewController *webVC = [[TOWebViewControlleralloc]initWithURLString:path];

                UINavigationController *nan = [[UINavigationControlleralloc]initWithRootViewController:webVC];

                nan.navigationBar.translucent =NO;

                nan.navigationBar.barTintColor =baseColor;

                nan.navigationBar.barStyle =UIStatusBarStyleLightContent;

                [nan.navigationBarsetTitleTextAttributes:@{NSFontAttributeName:[UIFontfontWithName:@"Helvetica-Bold"size:19],NSForegroundColorAttributeName:[UIColorwhiteColor]}];

                nan.modalTransitionStyle =UIModalTransitionStyleCrossDissolve;

                [selfpresentViewController:nananimated:YEScompletion:^{

                    

                }];

            }

        }

        decisionHandler(WKNavigationActionPolicyCancel);

    }

}




原创粉丝点击