先简单地说一下思路吧

  • 需求:在App中嵌入一个webView,已经有了网址,但是需要去掉这个网页中的一些内容
  • 解决方案:取到webView要加载的网址,对这个网址对应的网页信息进行修改
  • 简单描述:
    1. 遵守webView的协议

      <UIWebViewDelegate>

    2. 设置代理
    3. 实现相应代理方法,对网页信息中要删除的内容对应到节点,并删除
      • 删除的部分处理:获取到相应的节点并执行删除操作的语句写法有三种方式:见http://www.w3school.com.cn/js/js_htmldom.asp
 1 #import "JSHanledWebViewController.h"
 2
 3 //1.遵守协议
 4 @interface JSHanledWebViewController ()<UIWebViewDelegate>
 5 @property (weak, nonatomic) IBOutlet UIWebView *webView;
 6
 7 @end
 8
 9 @implementation JSHanledWebViewController
10
11 - (void)viewDidLoad {
12     [super viewDidLoad];
13
14     //2.设置代理
15     self.webView.delegate = self;
16     [self loadWebView];
17
18 }
19
20 #pragma mark - 加载webView
21 - (void)loadWebView{
22
23     [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://m.dianping.com/tuan/deal/66666"]]];
24     //关闭webView的弹簧效果
25     self.webView.scrollView.bounces = NO;
26     //隐藏滚动条
27     self.webView.scrollView.showsVerticalScrollIndicator = NO;
28
29
30 }
31
32 //3.实现相应代理方法
33 #pragma mark - Sent after a web view finishes loading a frame.
34 - (void)webViewDidFinishLoad:(UIWebView *)webView{
35
36     NSMutableString *jsStrM = [NSMutableString string];
37
38     //参考w3c: http://www.w3school.com.cn/js/js_htmldom.asp
39     //注意取出来的是个数组,注意指定下标
40     //取到顶部的导航栏
41     [jsStrM appendString:@"var header = document.getElementsByTagName('header')[0];"];
42     [jsStrM appendString:@"header.parentNode.removeChild(header);"];
43
44     //取到网页轮播器下的 立即购买
45     [jsStrM appendString:@"var costBox = document.getElementsByClassName('cost-box')[0];"];
46     [jsStrM appendString:@"costBox.parentNode.removeChild(costBox);"];
47
48     //取到灰色的立即购买
49     [jsStrM appendString:@"var buy = document.getElementsByClassName('buy-now btn-gray')[0];"];
50     [jsStrM appendString:@"buy.parentNode.removeChild(buy);"];
51
52     //取到底部的首页 点评团...
53     [jsStrM appendString:@"var footer = document.getElementsByClassName('footer')[0];"];
54     [jsStrM appendString:@"footer.parentNode.removeChild(footer);"];
55
56     //取到黄色的立即购买按钮
57     [jsStrM appendString:@"var footerBtn = document.getElementsByClassName('footer-btn-fix')[0];"];
58     [jsStrM appendString:@"footerBtn.parentNode.removeChild(footerBtn);"];
59
60     //The stringByEvaluatingJavaScriptFromString: method waits synchronously for JavaScript evaluation to complete.
61     [webView stringByEvaluatingJavaScriptFromString:jsStrM];
62
63
64 }
65
66 @end

  • 最终的效果如下所示 

如有问题,敬请指正!

转载于:https://www.cnblogs.com/ITCoderW/p/6181719.html

JS和OC交互的简单应用相关推荐

  1. iOS JS与OC交互

    iOS JS与OC交互 本文内容导航 1.`UIWebView` JS 与 OC 交互 1.1 OC 调用 JS 函数 1.1.1 OC 拼接 JS 字符串调用 JS 方法 1.1.2 使用 JSCo ...

  2. OC WKWebView的JS与OC交互、Cookie管理

    完全抄录:iOS中UIWebView与WKWebView.JavaScript与OC交互.Cookie管理看我就够(中) ####WKWebView 是Apple于iOS 8.0推出的WebKit中的 ...

  3. UIWebView中JS与OC交互 WebViewJavascriptBridge的使用

    一.综述 现在很多的应用都会在多种平台上发布,所以很多程序猿们都开始使用Hybrid App的设计模式.就是在app上嵌入网页,只要写一份网页代码,就可以跑在不同的系统上.在iOS中,app多是通过W ...

  4. iOS下JS与OC互相调用(五)--UIWebView + WebViewJavascriptBridge

    WebViewJavascriptBridge是一个有点年代的JS与OC交互的库,使用该库的著名应用还挺多的,目前这个库有7000+star.我去翻看了它的第一版本已经是4年前了,在版本V4.1.4以 ...

  5. iOS下JS与OC互相调用(二)--WKWebView 拦截URL

    在上篇文章中讲述了使用UIWebView拦截URL的方式来处理JS与OC交互. 由于UIWebView比较耗内存,性能上不太好,而苹果在iOS 8中推出了WKWebView. 同样的用WKWebVie ...

  6. iOS下JS与OC互相调用(一)--UIWebView 拦截URL

    1.在JS 中做一次URL跳转,然后在OC中拦截跳转.(这里分为UIWebView 和 WKWebView两种,去年因为还要兼容iOS 6,所以没办法只能采用UIWebView来做.) 2.利用WKW ...

  7. c html联调,JS与native 交互简单应用

    JS与native 交互简单应用 一.objectiveC 语法简介 二.简易项目浏览器搭建 新建项目步骤: 1> DraggedImage.png 2> 2222.png 3> 3 ...

  8. iOS中JS 与OC的交互(JavaScriptCore.framework)

    iOS中实现js与oc的交互,目前网上也有不少流行的开源解决方案: 如:react native 当然一些轻量级的任务使用系统提供的UIWebView 以及JavaScriptCore.framewo ...

  9. JS与OC的交互 WebViewJavaScriptBridge WEB微信支付

    JS与OC的交互 WebViewJavaScriptBridge WEB微信支付: Markdown及扩展 网上找了挺多的,自己给自己总结了一下(仅供小白参考,大牛就放过我吧)说白了就是混合开发H5+ ...

最新文章

  1. R创建两个变量的直方图
  2. 如何选购晨检机器人_扫地机器人好不好用?如何选购?答案在这
  3. accept 阻塞怎么断开_暖气片放水就热不放水了就不热,怎么解决?
  4. Zookeeper知识梳理
  5. Mac--PHP已经开启gd扩展验证码不显示
  6. echarts里面的参数解释_Echarts适用小技巧:适用参数详细说明及示例-TS文件
  7. 面试薪资这样谈,让你的月薪加倍!
  8. [ZJOI2006]超级麻将
  9. nginx php value,Nginx 设置 PHP_VALUE 的灵异问题
  10. linux nginx安装php5.5,linux下搭建LNMP(linux+nginx+mysql+php)环境之mysql5.5安装
  11. 扫描服务器用户,服务器安全工具(自动扫描后门路径)
  12. vue多单页面多tab_vue-cli3创建多页面项目
  13. Android开发中Ant命令编译和APK签名的一些心得
  14. python数据分析:Numpy
  15. 小程序包大小超过限制
  16. Multiples of 3 and 5
  17. 解决“试图加载格式不正确的程序”问题
  18. Mybatis-plus的Service
  19. 迁移学习和微调深度卷积神经网络
  20. 解决问题:Matlab如何生成或保存无背景图片

热门文章

  1. html让布局垂直居中,css垂直居中布局总结
  2. excel mysql实时交换数据_Excel与数据库的数据交互
  3. nodejs shell交互_nodejs调用shell
  4. linux io映射,【原创】Linux 文件系统移植全解密以linux-2.6.35内核源码为例说明一下IO静态映射的过程...
  5. 奔跑吧linux内核_别了,Linux 的魔法时代!
  6. java窗口how2j_How2J Java 基础
  7. 大数据平台建设方案_工信部:全国范围内逐步推进反诈大数据平台建设
  8. set python_使用dict和set
  9. java求阶乘的程序_按要求编写Java程序(阶乘)
  10. openStreetMap学习网站