先简单地说一下思路吧

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

      <UIWebViewDelegate>

    2. 设置代理
    3. 实现相应代理方法,对网页信息中要删除的内容对应到节点,并删除
 #import "JSHanledWebViewController.h"

 //1.遵守协议
@interface JSHanledWebViewController ()<UIWebViewDelegate>
@property (weak, nonatomic) IBOutlet UIWebView *webView; @end @implementation JSHanledWebViewController - (void)viewDidLoad {
[super viewDidLoad]; //2.设置代理
self.webView.delegate = self;
[self loadWebView]; } #pragma mark - 加载webView
- (void)loadWebView{ [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://m.dianping.com/tuan/deal/66666"]]];
//关闭webView的弹簧效果
self.webView.scrollView.bounces = NO;
//隐藏滚动条
self.webView.scrollView.showsVerticalScrollIndicator = NO; } //3.实现相应代理方法
#pragma mark - Sent after a web view finishes loading a frame.
- (void)webViewDidFinishLoad:(UIWebView *)webView{ NSMutableString *jsStrM = [NSMutableString string]; //参考w3c: http://www.w3school.com.cn/js/js_htmldom.asp
//注意取出来的是个数组,注意指定下标
//取到顶部的导航栏
[jsStrM appendString:@"var header = document.getElementsByTagName('header')[0];"];
[jsStrM appendString:@"header.parentNode.removeChild(header);"]; //取到网页轮播器下的 立即购买
[jsStrM appendString:@"var costBox = document.getElementsByClassName('cost-box')[0];"];
[jsStrM appendString:@"costBox.parentNode.removeChild(costBox);"]; //取到灰色的立即购买
[jsStrM appendString:@"var buy = document.getElementsByClassName('buy-now btn-gray')[0];"];
[jsStrM appendString:@"buy.parentNode.removeChild(buy);"]; //取到底部的首页 点评团...
[jsStrM appendString:@"var footer = document.getElementsByClassName('footer')[0];"];
[jsStrM appendString:@"footer.parentNode.removeChild(footer);"]; //取到黄色的立即购买按钮
[jsStrM appendString:@"var footerBtn = document.getElementsByClassName('footer-btn-fix')[0];"];
[jsStrM appendString:@"footerBtn.parentNode.removeChild(footerBtn);"]; //The stringByEvaluatingJavaScriptFromString: method waits synchronously for JavaScript evaluation to complete.
[webView stringByEvaluatingJavaScriptFromString:jsStrM]; } @end
  • 最终的效果如下所示 

如有问题,敬请指正!

JS和OC交互的简单应用的更多相关文章

  1. JS与OC交互--简单使用

    直接上代码 .m文件 #import "ViewController.h" @interface ViewController () <UIWebViewDelegate&g ...

  2. 史上最全的 UIWebview 的 JS 与 OC 交互

    来源:伯乐在线 - 键盘风筝 链接:http://ios.jobbole.com/89330/ 点击 → 申请加入伯乐在线专栏作者 其实一直想给大家整理一下JS与OC的交互,但是没有合适的机会,今天借 ...

  3. MXBridge - 插件式JS与OC交互框架

    概述 MXBridge,提供一个插件式的JavaScript与Objective-C交互的框架,通过JavaScriptCore实现,插件式扩展Obejctive-C接口以供JavaScript调用. ...

  4. 转载 【iOS开发】网页JS与OC交互(JavaScriptCore) OC ----->JS

      目标 本文介绍利用苹果在iOS7时发布的JavaScriptCore.framework框架进行js与OC的交互.我们想要达到的目标是: OC调用网页上的js方法 网页js调用APP中的OC方法 ...

  5. JS 与OC 交互篇

    完美记录交互 CSDN博客: (OC调用JS) http://blog.csdn.net/lwjok2007/article/details/47058101 (JS调用OC) http://blog ...

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

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

  7. iOS JS 和 OC交互 / JS 和 native 相互调用

    现在app 上越来越多需求是通过UIWebView 来展示html 或者 html5的内容, js 和 native OC代码交互 就非常常见了. js 调用 native  OC代码 第一种机制 ( ...

  8. 利用WKWebView实现js与OC交互注意事项

    最近在写一些关于wkwebview的一些代码,发现了几点心得,记录一下. 1.js调用OC 我是利用wkwebview进行的开发实现,主要代码有三部分 1.向config注入OC对象 [config. ...

  9. JS与OC交互,JS中调用OC方法(获取JSContext的方式)

    最近用到JS和OC原生方法调用的问题,查了许多资料都语焉不详,自己记录一下吧,如果有误欢迎联系我指出. JS中调用OC方法有三种方式: 1.通过获取JSContext的方式直接调用OC方法 2.通过继 ...

随机推荐

  1. Gulp安装流程、使用方法及cmd常用命令导览

    Gulp安装流程.使用方法及CMD常用命令导览 来自前端小白的gulp及周边知识学习总结 一.名词介绍: Npm--node包管理工具 一开始我不理解,包管理工具是什么鬼.后来用到的gulp也好,gu ...

  2. [CF486D]有效集合-树形dp

    Problem 有效集合 题目大意 给出一棵树,求出这棵树的不同联通子节点集合的数量,这些集合必须满足最大权值点减最小权值点小于等于d. Solution 再一次树d乱搞. 因为数据范围贼小,所以我们 ...

  3. JS实现悬浮导航的制作--web前端

    思想:导航在这里只有两种状态,一种是初始状态.一种是固定布局状态.实现悬浮导航其实就是通过Javascript脚本语言控制导航的两种状态,主要是对两种状态成立条件的判断,明确了这些,实现起来就不会太难 ...

  4. 在Linux安装配置Tomcat 并部署web应用 ( 三种方式 )

    系统版本:centos6.5版本 java版本:1.7 一.准备工作 1.java -version 检查是否有java环境,没有则需要去安装并配置到环境变量中. 2.下载tomcat包,下载地址:h ...

  5. STL—对象的构造与析构

    STL内存空间的配置/释放与对象内容的构造/析构,是分开进行的.   对象的构造.析构         对象的构造由construct函数完成,该函数内部调用定位new运算符,在指定的内存位置构造对象 ...

  6. FZU 2256 迷宫

    https://vjudge.net/problem/FZU-2256 题意:略 思路: 在比赛的时候想到了一次dfs,一次bfs但是样例都过不了...赛后才知道,距离的更新必须同步,不能先把时光机的 ...

  7. Android - 关于设备版本号

    设备信息可以在Settings - About 里看到 最近想改机器的build number,找到了 build/core/Makefile 里的定义 # Display parameters sh ...

  8. python学习之while循环

    Python While 循环语句 Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务.其基本形式为: while 判断条件: 执行语 ...

  9. 初次配置git与github出现push不了的问题

    ssh: connect to host gmail.com port 22: No route to host fatal: Could not read from remote repositor ...

  10. [分享] 自动化测试与持续集成方案-- UI 检查

    对于自动化测试中,UI 自动化测试估计是最有争议的,让人又爱又恨. UI 自动化做回归测试,可以省下很多人力.如果版本一直不稳定,投入跟产出不成比例的. 时机 一般是要版本稳定,界面改动不大.如果迭代 ...