基于UIWebview加载html代码 并获取标签
来源:互联网 发布:李勇seo博客 编辑:程序博客网 时间:2024/05/24 05:13
最近项目由于工期紧张需要有pc端设计两个界面,移动端加载界面。(本来是用JS做交互 但是公司觉得麻烦,所以直接让我用UIWebView加载)。
需求:加载html界面 但是需要跳转界面,和用原生写的一样。
分析:当用UIWebView加载网页时,当点击链接时,捕获链接 然后 再根据链接实行跳转。
开始录入代码:
1、创建UIWebViiew:
//创建
UIWebView * GMWebView;
//绘制页面
GMWebView = [[UIWebViewalloc]initWithFrame:CGRectMake(0,0, kScreenWidth,kScreenHeight-64-44-49)];
GMWebView.delegate =self;
[self.viewaddSubview:GMWebView];
NSURL * gmUrl = [NSURLURLWithString:_governMentUrl];
// NSURL * gmUrl = [NSURL URLWithString:@"https://www.baidu.com"];
NSURLRequest * request = [NSURLRequestrequestWithURL:gmUrl];
[GMWebViewloadRequest:request];
[[JLJToolsshareInstance] ShowWithString:@"加载中..."];(ps:项目中自己定义的UIProgressHUD)
2、实现UIWebView的代理方法
@optional
// 如果返回NO,代表不允许加载这个请求 返回YES 代表允许加载这个请求
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
//UIWebView开始加载
- (void)webViewDidStartLoad:(UIWebView *)webView;
//UIWebView加载完成
- (void)webViewDidFinishLoad:(UIWebView *)webView;
//UIWebView加载失败
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;
@end
PS:这个地方重点。当时我们时模仿原生的 跳页之后加载新的html代码 不是在当页加载 所以shouldStartLoadWithRequest这个方法会在你点击的时候加载一次 你跳进新的界面有加载了一次。但是两次加载的内容是不一样的,这个地方注意一下。我的解决办法是这样的设置一个BOOL变量,当第一次点击去是加载,第二次加载(跳出的加载)就不走了。
实现方法:
#pragma mark --- 添加UIWebView的代理方法
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
if (!isTimes) {
isTimes =YES;
returnYES;
}else{
NSURL *url = [requestURL];(ps:获取到的url 一般是本地的链接)
FDLog(@"点击的链接%@",url);
[selfpushToDetailViewController:url];
returnNO;
}
}
/**
UIWebView 的代理方法(已经开始加载)
@param webView webView 创建的WebView
*/
- (void)webViewDidStartLoad:(UIWebView *)webView{
FDLog(@"点击的链接 执行的顺序");
}
/**
UIWebView 的代理方法(已经加载完成)
@param webView webView 创建的WebView
*/
- (void)webViewDidFinishLoad:(UIWebView *)webView{
[[JLJToolsshareInstance] dismissSVProgressHUD];
FDLog(@"点击的链接 执行的顺序");
}。
/**
跳转到详情界面
@param detailUrl detailUrl跳转到
*/
- (void)pushToDetailViewController:(NSURL*)detailUrl;
{
JLJGMdetailController * GMdetailVC = [[JLJGMdetailControlleralloc]init];
GMdetailVC.detailUrl = detailUrl;
[self.navigationControllerpushViewController:GMdetailVCanimated:YES];
}
3、截取url和标签
由于要用到分享 所以要获取 这个html页面的title、url和Image 所以:
注意要在加载完成操作:
/**
UIWebView 的代理方法(已经加载完成)
@param webView webView 创建的WebView
*/
- (void)webViewDidFinishLoad:(UIWebView *)webView{
[[JLJToolsshareInstance] dismissSVProgressHUD];
//分享时需要的题目
NSString *title = [GMDetailViewstringByEvaluatingJavaScriptFromString:@"document.title"];
//界面上的题目
NSString * titleString = [GMDetailViewstringByEvaluatingJavaScriptFromString:@"document.getElementById(\"app-title\").innerText"];
//图片地址
NSString * ImgString = [GMDetailViewstringByEvaluatingJavaScriptFromString:@"document.getElementById(\"app-title\").getAttribute(\"data-shareimg\")"];
NSLog(@"网页端的名字~~%@~~%@,~~%@",ImgString,titleString,title);
//设置导航栏的名字
self.title = titleString;
//分享需要的题目图片
detailTitle = title;
shareImg = ImgString;
}
这样就获取到了。可以分享了。
其实还有很多的获取html标签的方法:
参考的代码:http://blog.sina.com.cn/s/blog_b8e97683010183lz.html
感谢诸君,其实也是为了自己总结一下,小码农要不断的总结经验和教训。
- 基于UIWebview加载html代码 并获取标签
- UIWebView加载html标签
- uiwebview加载html代码
- html代码加载到UIWebView
- iOS UIWebView加载html代码
- iOS UIWebView截获HTML并修改标签内容
- UIWebView加载html
- uiwebView 加载html字符串
- UIWebView加载html
- UIWebView加载本地html
- UIWebView加载本地html
- UIWebView 加载 HTML
- UIWebView加载本地html
- UIWebView加载本地html
- UIWebView加载html(转)
- HTML标签自定义属性,并怎么获取
- 自定义html标签属性并获取
- UIWebView(Javascript)Html标签操作
- 【Object - c 高级】01 内存管理 MRC
- 浅谈数据库中的触发器
- Static Text控件
- 线段树练习
- codeforces 727F. Polycarp's problems
- 基于UIWebview加载html代码 并获取标签
- Ubuntu 16.04 SSH 无法远程登录问题
- SDN开源项目汇总
- firefox插件
- Python Windows开发环境搭建
- Android屏幕适配(整理)
- ViewPager + Fragment的预加载解决方法
- linux-内核概述学习笔记
- 文章标题