美文网首页iOS开发iOS开发实用技术iOS编程
iOS-OC中加载html5调用html方法和修改HTML5内容

iOS-OC中加载html5调用html方法和修改HTML5内容

作者: 船长_ | 来源:发表于2015-11-11 22:17 被阅读23459次
  • 1.利用webView控件加载本地html5或者网络上html5
  • 2.设置控制器为webView的代理,遵守协议
  • 3.实现代理方法webViewDidFinishLoad:
  • 4.在代理方法中进行操作HTML5中的标签(CRUD-->增删改查)
    • 1.用类选择器或者id选择器或者标签选择器等选择要进行操作的标签
    • 2.把选择好的标签转换成字符串
    • 3.webView调用stringByEvaluatingJavaScriptFromString方法
  • 应用场景:比如加载了网络上的百度链接,但是不想要它某个链接标签,利用这个代理方法,获取这个标签,然后删除它,或者更改他标签的显示文字等内容

1.加载本地HTML5

NSURL *url = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"html"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];

2.加载网络上网页HTML5

NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];

3.在oc中删除HTML5中的某个标签,比如按钮

// 网页视图加载完毕会调用代理的这个方法
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSString *str = @"document.getElementsByClassName('detail_btns2')[0].remove();";
    [webView stringByEvaluatingJavaScriptFromString:str];
}

4.在oc中更改HTML5内容

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
   NSString *headerStr = @"document.getElementsByTagName('h1')[0].innerText = '测试文字';";
   [webView stringByEvaluatingJavaScriptFromString:headerStr];

   NSString *downLoadStr = @"document.getElementById('xiazaiapp').getElementsByTagName('a')[0].innerText = '下个鸡蛋';";
   [webView stringByEvaluatingJavaScriptFromString:downLoadStr];
}

相关文章

网友评论

  • 凡尘一笑:哥们在不,加个QQ私聊一下 有个问题想向你请教
    船长_:@凡尘一笑 863223764
  • huixiansheng:我加载的是本地的HTML文件,但是在WebView的代理中执行了元素修改的动作,webView上没有改变?求大神给个出路:pray:
    huixiansheng:@船长_ 嗯,可以啦!笨脑子把元素拿错了。另外再问一下船长,这个怎么用正则进行替换呢?
    船长_:@huixiansheng 断点看有没有走代理方法,标签元素有没有拿正确
  • Damon4Zhou:可以向html取一些数据吗?
    船长_:@Damon4Zhou 可以获取标签的字段,现在一般不用webview.用wkwebview
  • LD_左岸:如果一个div标签 既有id 又有class怎么删除呢 比如<div id="share-tip" class="share-tip">
    LD_左岸:大牛啊 还有一种情况 就是我的div标签 后面的class不是唯一的 后面还有一个data-id 这个data-id是依次递增的 如 H5文件中好多这样的div标签 <div class="item-info" data-id="608">
    ::before下面就是别的标签了 我现在想把这种div标签全部删除怎么删呢
    LD_左岸:@船长_ 感谢 解决了 确实是这样的额
    船长_:只要这个标签是唯一的,用id或者class都行
  • 管家頗:修改不了百度页面啊
  • 若雨千寻:怎么才能取到h5页面标签的值呢?比如一个h5按钮上的文字,或者一个inputview里的值 :smile:
    d2726e8ce834:@若雨千寻 我用的是第三方TFHpple
  • 芝麻绿豆:我们公司的iOS项目现在基本都是h5了!感觉自己要失业了:joy:
    船长_:@芝麻绿豆 那就赶紧转h5,多么好的机会
  • 54番茄:尝试修改百度 好像不可以啊
  • 两好三坏:出现乱码吗?
  • 3a65b282a89a:这样是不是可以在本地写一些Html的模板,然后从网上获取json数据,根据不同json类容使用不同模板,并且能加快网络反应速度?
    小小土豆dev:可以把html模板加入本地,从服务器获取json数据,然后通过调用html里的JS方法,把json数据传给html.
    Code_zhou:这个问题你证实了吗?我现在就是这个需求,正在找方法。(我们是新闻详情页,模板一样,内容活动)

本文标题:iOS-OC中加载html5调用html方法和修改HTML5内容

本文链接:https://www.haomeiwen.com/subject/kemhhttx.html