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);
}
}
- WKWebview 获取网页高度,图片点击查看,网页链接点击
- 点击查看网页中图片
- UIWebView&WKWebView获取网页高度
- WKWebview点击图片查看大图
- 点击链接全屏打开网页
- 点击链接弹出指点网页
- 自动获取字符串中的网页,邮箱等链接,点击事件
- 点击改变网页图片背景
- 网页~点击换图片code
- iOS WKWebView 加载网页 点击link不会跳转的解决方案
- WKWebView 点击链接无反应
- 桌面上点击一个图标,链接到网页
- 网页2.点击链接打开窗口
- 点击链接加载网页 与 地址栏输入网址加载网页
- 网页效果获取鼠标点击的位置
- 消除点击网页图片、文字链接后出现的虚线框
- 消除点击网页图片、文字链接后出现的虚线框
- wkwebview 字体大小调整 网页内容高度计算
- Win7延迟90秒启动exe文件
- @Autowired的用法
- HDU 1548 A strange lift (简单BFS)
- Java 基本数据类型与流程结构
- Python3学习(4)--集合list和tuple
- WKWebview 获取网页高度,图片点击查看,网页链接点击
- 机器学习笔记--线性代数
- JAVAWEB开发之工作流详解(一)——Activiti的环境搭建、插件安装、核心API
- BZOJ4721 [Noip2016]蚯蚓
- 关于Easy UI中文件上传处理进度条的实现
- 我的心不乱
- 一个好的开端
- echarts折线图时间轴展示
- 用微信小程序开店之二——Hello 小程序