最近使用火车票网的限行网页,但是广告以及头部nav和地步footer都是我们现在所不需要的,所以决定使用js交互,下面所有代码都写在 webViewDidFinishLoad 里面

1.查看原网址的源代码:

NSString *js1 = @"document.documentElement.innerHTML";

NSString *pageSource = [webView stringByEvaluatingJavaScriptFromString:js1];

 NSLog(@"pagesource:%@", pageSource);

2.编写js代码

  NSMutableString *js = [NSMutableString string];

    // 删除NAV

    [js appendString:@"var header = document.getElementById('huoche_nav');"];//获取id为huoche_nav节点

    [js appendString:@"header.parentNode.removeChild(header);"];//把节点从父试图中删除

    // 删除TOPBAR

    [js appendString:@"var box = document.getElementById('huoche_topbar');"];

    [js appendString:@"box.parentNode.removeChild(box);"];

    // 删除footer

    [js appendString:@"var buyNow = document.getElementById('footer');"];

    [js appendString:@"buyNow.parentNode.removeChild(buyNow);"];

    [js appendString:@"var form1 = document.getElementById('form1');"];

    [js appendString:@"form1.parentNode.removeChild(form1);"];

   [js appendString:@"var righttbox = document.getElementsByClassName('righttbox')[0];"];

    [js appendString:@"righttbox.parentNode.removeChild(righttbox);"];

    [js appendString:@"var height8 = document.getElementsByClassName('center_xianlu height8')[0];"];

    [js appendString:@"height8.parentNode.removeChild(height8);"];

3.在webview的代理方法webViewDidFinishLoad中执行js代码

  [webView stringByEvaluatingJavaScriptFromString:js];

4.如果需要使用uiwebview双指变大变小,需要添加

   webview.scalesPageToFit=YES;

    webview.multipleTouchEnabled=YES;

    webview.userInteractionEnabled=YES;

总结:

1.

NSURL *url = [[NSBundle mainBundle] URLForResource:@"index"

withExtension:@"html"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];

2.

NSString *str1 = @"var word =

document.getElementById('word');";
NSString *str2 = @"word.remove();";
[webView stringByEvaluatingJavaScriptFromString:str1];
[webView stringByEvaluatingJavaScriptFromString:str2];

3.

NSString *str3 = @"var change =

document.getElementsByClassName('change')[0];" "change.innerHTML = '!';";

    [webView stringByEvaluatingJavaScriptFromString:str3];

4.

NSString *str4 =@"var img = document.createElement('img');"

                     "img.src = 'img_01.jpg';"
"img.width = '160';"
"img.height = '80';"
"document.body.appendChild(img);";
[webView stringByEvaluatingJavaScriptFromString:str4];

5.

NSString *str1 = @"var h1 =

document.getElementsByTagName('h1')[0];" "h1.innerHTML='';";

    [webView stringByEvaluatingJavaScriptFromString:str1];

6.

NSString *str2

=@"document.getElementById('footer').remove();";
[webView stringByEvaluatingJavaScriptFromString:str2];

7.

NSString *str3 = @"document.body.outerHTML"; NSString *html = [webView

stringByEvaluatingJavaScriptFromString:str3];
NSLog(@"%@", html);

在html中调用OC
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:
(NSURLRequest *)request navigationType:
(UIWebViewNavigationType)navigationType{
NSString *str = request.URL.absoluteString;
NSRange range = [str rangeOfString:@"ZJY://"];
if (range.location != NSNotFound) {
NSString *method = [str substringFromIndex:range.location
+ range.length];
SEL sel = NSSelectorFromString(method);
[self performSelector:sel];
}return YES; }

UIWebview于JS交互的更多相关文章

  1. UIWebView 与 JS 交互(1):Objective-C 调用 Javascript

    众所周知,随着硬件水平的发展,HTML5 与原生 APP 性能差距不断缩小,正在互联网科技领域扮演者越来越重要的角色.作为一种能很大程度上节约成本的技术方案,通过 HTML5 及 JS 实现的跨平台技 ...

  2. UIWebView和Js交互

    在日常的ios项目开发中,我们经常会在原生应用中嵌入web页面,通常我们只是进行一个展示,没有其它的一些功能.但是也有一些项目中需要web页面中的html和native进行交互.但是ios sdk 并 ...

  3. iOS中UIWebView使用JS交互 - 机智的新手

    iOS中偶尔也会用到webview来显示一些内容,比如新闻,或者一段介绍.但是用的不多,现在来教大家怎么使用js跟webview进行交互. 这里就拿点击图片获取图片路径为例: 1.测试页面html & ...

  4. UIWebview与js交互[转]

    UIWebView是iOS最常用的SDK之一,它有一个stringByEvaluatingJavaScriptFromString方法可以将javascript嵌入页面中,通过这个方法我们可以在iOS ...

  5. iOS中UIWebView使用JS交互

    iOS中偶尔也会用到webview来显示一些内容,比如新闻,或者一段介绍.但是用的不多,现在来教大家怎么使用js跟webview进行交互. 这里就拿点击图片获取图片路径为例: 1.测试页面html & ...

  6. uiwebview和 js交互框架

    WebViewJavascriptBridge

  7. UIWebView与JS的深度交互

    我要实现这样一个需求:按照本地的CSS文件展示一串网络获取的带HTML格式的只有body部分的文本,需要自己拼写完整的 HTML.除此之外,还需要禁用获取的HTML文本中自带的 < img &g ...

  8. UIWebView与JS的深度交互-b

    要实现这样一个需求:按照本地的CSS文件展示一串网络获取的带HTML格式的只有body部分的文本,需要自己拼写完整的 HTML.除此之外,还需要禁用获取的HTML文本中自带的 < img > ...

  9. iOS中使用UIWebView与JS进行交互

    iOS中使用UIWebView与JS进行交互 前一段忙着面试和复习,这两天终于考完试了,下学期的实习也有了着落,把最近学的东西更新一下,首先是使用UIWebView与JS进行交互 在webView中我 ...

随机推荐

  1. java基础---->使用Itext生成数据库文档

    这里简单的介绍一下使用Itext生成数据库表的文档.于是我们领教了世界是何等凶顽,同时又得知世界也可以变得温存和美好. 生成数据库的文档 一.maven项目需要引入的jar依赖 <depende ...

  2. java基础---->java多线程的使用(十)

    这里介绍一下java中关于线程状态的知识,主要通过代码演示各种状态出现的时机.少年时我们追求激情,成熟后却迷恋平庸,在我们寻找,伤害,背离之后,还能一如既往的相信爱情,这是一种勇气.每个人都有属于自己 ...

  3. -webkit-transition -moz-transition transition

    -webkit-transition  -moz-transition transition 可以定义动画的变化时间曲线-webkit-transition-timing-function: ease ...

  4. POJ 1117 Pairs of Integers

    Pairs of Integers Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4133 Accepted: 1062 Des ...

  5. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十五:FIFO储存模块(同步)

    实验十五:FIFO储存模块(同步) 笔者虽然在实验十四曾解释储存模块,而且也演示奇怪的家伙,但是实验十四只是一场游戏而已.至于实验十五,笔者会稍微严肃一点,手动建立有规格的储存模块,即同步FIFO.那 ...

  6. vue开发 - 将方法绑定到window对象,给app端调用

    通过jsBridge方法,H5可以调用客户端(ios,android)的内部方法,同样,客户端也需要能调用H5页面里定义的js方法,但是在vue里,所有的方法都是在组件内部声明的,也只能在组件内部调用 ...

  7. Unity3D Android动态反射加载程序集

    这种办法在iOS下是不让用的,只能在Android下用.用起来也很方便了. 1.先创建一个c#工程,引用到的UnityEngine.dll在Unity的安装目录里找吧 2.将编译的dll放入Unity ...

  8. C语言位操作--判断整数是否为2的幂

    unsigned int v; // 判断v是否为2的幂 bool f; // f为判断的结果 f = (v & (v - 1)) == 0; // 结果为0表示不是2 的幂 // 改变表示方 ...

  9. 如何搭建web服务器 使用Nginx搭建反向代理服务器 .

    引言:最近公司有台服务器遭受DDOS攻击,流量在70M以上,由于服务器硬件配置较高所以不需要DDOS硬件防火墙.但我们要知道,IDC机房是肯定不允许这种流量一直处于这么高的,因为没法具体知道后面陆续攻 ...

  10. Unity笔记 英保通 Unity新的动画系统Mecanim

    Mecanim动画系统是Unity独一无二.强大灵活的人物动画系统.该系统赋予您的人类和非人类人物令人难以置信的自然流畅的动作,使它们栩栩如生.游戏中角色设计提高到了新的层次,在处理人类动画角色中可以 ...