先简单地说一下思路吧

  • 需求:在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. YARN框架详解

    YARN框架详解 YARN官方解释 YARN是什么 The fundamental(定义) idea of YARN is to split(分开) up the functionalities(功能 ...

  2. Java数据类型在实际开发中的应用一

    在前边的博文中,我已经介绍了Java核心的容器IO等,现在我来说一下java中的数据类型.在java中,一切东西皆为对象(这句话意思是java中绝大数情况都用对象),极少数不是对象的,也存在与之对应的 ...

  3. 浅谈Ajax 异步的几点细节

    1.浏览器执行到Ajax代码的这行语句的时候,发出了一个HTTP请求,欲想请求服务器上的数据.服务器此时开始I/O,所谓的I/O就是磁盘的读写,需要花费一些时间,所以不会立即产生下行的HTTP报文: ...

  4. ArcGisEngine图层操作(随笔,不全)

    1.加载图层: 1.1 object.AddLayer(Layer[,toindex=0]) Layer表示ILayer对象,必选,toIndex参数表示图层索引(长整型),没需求可以忽略. 1.2 ...

  5. VBA编程的工程性规划

    看过很多人写的VBA代码,一团一团的,一点规划都没有,为了VBA编程更具工程性,这里讨论一下,并列出自己的一些建议:0.给VBA工程定义一个名字,而非直接使用默认的名称——"VBAProje ...

  6. 高效测试用例组织算法pairwise之Python实现

    ------------------------------------------本文专为<光荣之路培训 >原创,如有转载请注明出处--------------------------- ...

  7. linux系统编程之文件IO

    1.打开文件的函数open,第一个参数表示文件路径名,第二个为打开标记,第三个为文件权限 代码: #include <sys/types.h> #include <sys/stat. ...

  8. Linux服务器下对Oracle作Rman备份

    由于工作需要,最近要对几台Linux系统下的Oracle数据库进行Rman备份,就在操作的同时,整理了一下,方便今后作为资料进行查阅. ------------------------Linux服务器 ...

  9. Jmeter编写Base64加密函数

    方法一: 使用Beanshell Sampler.BSF Sampler等实现,现已Base64加密为例,脚本如下: import sun.misc.BASE64Decoder; String res ...

  10. 《HelloGitHub》第 16 期

    <HelloGitHub>第 16 期 兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这是一个面向编程新手.热爱编程. ...