ObjectiveC与JavaScript的交互

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

stringByEvaluatingJavaScriptFromString

使用stringByEvaluatingJavaScriptFromString方法,需要等UIWebView中的页面加载完成之后去调用。我们在界面上拖放一个UIWebView控件。在Load中将google mobile加载到这个控件中,代码如下:

- ( void )viewDidLoad
{
[super viewDidLoad];
webview.backgroundColor = [UIColor clearColor];
webview.scalesPageToFit = YES;
webview. delegate = self;
NSURL * url = [[NSURL alloc] initWithString: @" http://www.google.com.hk/m?gl=CN&hl=zh_CN&source=ihp " ];

NSURLRequest * request = [[NSURLRequest alloc] initWithURL:url];
[webview loadRequest:request];
}

我们在webViewDidFinishLoad方法中就可以通过javascript操作界面元素了。

1、获取当前页面的url。

- ( void )webViewDidFinishLoad:(UIWebView * )webView {
NSString * currentURL = [webView stringByEvaluatingJavaScriptFromString: @" document.location.href " ];
}

2、获取页面title:

- ( void )webViewDidFinishLoad:(UIWebView * )webView {
NSString * currentURL = [webView stringByEvaluatingJavaScriptFromString: @" document.location.href " ];

NSString * title = [webview stringByEvaluatingJavaScriptFromString: @" document.title " ];
}

3、修改界面元素的值。

NSString * js_result = [webView stringByEvaluatingJavaScriptFromString: @"document.getElementsByName('q')[0].value='朱祁林'; " ];

4、表单提交:

NSString * js_result2 = [webView stringByEvaluatingJavaScriptFromString: @" document.forms[0].submit(); "];

这样就实现了在google搜索关键字:“朱祁林”的功能。

5、插入js代码

上面的功能我们可以封装到一个js函数中,将这个函数插入到页面上执行,代码如下:

[webView stringByEvaluatingJavaScriptFromString: @" var script = document.createElement('script'); "
" script.type = 'text/javascript'; "
" script.text = \"function myFunction() { "
" var field = document.getElementsByName('q')[0]; "
" field.value='朱祁林'; "
" document.forms[0].submit(); "
" }\"; "
" document.getElementsByTagName('head')[0].appendChild(script); " ];

[webView stringByEvaluatingJavaScriptFromString: @" myFunction(); " ];

看上面的代码:

a、首先通过js创建一个script的标签,type为'text/javascript'。

b、然后在这个标签中插入一段字符串,这段字符串就是一个函数:myFunction,这个函数实现google自动搜索关键字的功能。

c、然后使用stringByEvaluatingJavaScriptFromString执行myFunction函数。

演示:

第一步打开google mobile网站




    		    ObjectiveC与JavaScript的交互

第二步输入关键字




    		    ObjectiveC与JavaScript的交互
第三步搜素




    		    ObjectiveC与JavaScript的交互

总结:这篇文章主要是讲解了stringByEvaluatingJavaScriptFromString的用法,它的功能非常的强大,用起来非常简单,通过它我们可以很方便的操作uiwebview中的页面元素。

更多相关文章
  •  传统的登录框 在之前的文章 流量劫持危害 详细讲解了 HTTP 的高危性,以至于重要的操作都使用 HTTPS 协议,来保障流量在途中的安全. 这是最经典的登录模式.尽管主页面并没有开启 HTTPS,但登录时会跳转到一个安全页面来进行,所以整个过程仍是比较安全的 —— 至少在登录页面是安全的. 对于 ...
  •   1. 数据抽象:物理抽象.概念抽象.视图级抽象,内模式.模式.外模式 2. SQL语言包括数据定义.数据操纵(Data Manipulation),数据控制(Data Control) 数据定义:Create Table,Alter Table,Drop Table, Craete/Drop I ...
  • 一.下载centos 7 livecd iso 访问镜像网站,http://mirrors.aliyun.com/centos/7.0.1406/isos/x86_64/ 或者直接下载:http://mirrors.aliyun.com/centos/7.0.1406/isos/x86_64/Cen ...
  • 据媒体报道,美国国防部计算机系统某年度遭到黑客袭击的次数总和达21124次,平均每次抵御攻击耗资150万美元.为对付黑客,美国国防部每年要付出300多亿美元的代价,比当年制造原子弹的曼哈顿工程花费还要多. 对此,负责筹办国防部官网的相关人士称:"不法分子中,有些是军事爱好者,有些是别有用心 ...
  • 斯宾塞·金博尔(Spencer Kimball)在离开谷歌之后,突然觉得不便,因为手头缺少了很多曾在公司内部使用的定制软件.于是,他携手其他谷歌离职者,决心打造自己的版本.现在,他们决心公开自己的工作成果,帮助有志者创办下一个谷歌或Facebook. 金博尔特别想打造属于自己的谷歌数据库系统Span ...
  • 易网科技讯 5月20日早间消息,易网(Nasdaq:NTES)今天公布了截至2010年3月31日的第一季度财务业绩报告.数据显示,易网一季度总营收达12亿元人民币(1.75亿美元),同比增长54.16%.其中游戏业务营收11亿元(1.59亿美元),同比增长50.06%:门户广告营收9150万元(13 ...
一周排行
  • 我们现在用vista系统的人大多数还是双系统,可是万一某一个系统坏了要重装,另外一个却引导不了,接着重装,晕,两个系统重装可能一天忙得你够呛,还有人用第三方软件引导,可以是可以的,不过启动时间可能就会延长了,好了,废 ...
  • tomcat在启动时,会读取环境变量的信息,需要一个CATALINA_HOME 与JAVA_HOME的信息,CATALINA_HOME即tomcat的主目录,JAVA_HOME即java安装的主目录,jdk的主目录. ...
  • 财富故事再度上演,但这次并非是以IPO的方式,而是通过启明星辰兼并网御星云实现.同一批资产,时隔半年的两次资产评估,竟然造就价值相差10倍的资产神话.而当初以极低的股权成本实施MBO的两位高管,也凭此身价暴增. 停牌 ...
  • OC中提供了一种与众不同的方式--Category,可以动态的为已经存在的类添加新的行为(方法),这样可以保证类的原始设计规模较小,功能增加时再逐步扩展.在使用Category对类进行扩展时,不需要创建子类,Cate ...
  • 高持续性威胁(APT)是以商业和政治为目的的一个网络犯罪类别.APT需要长期经营与策划,并具备高度的隐蔽性,才可能取得成功.这种攻击方式往往不会追求短期的经济收益和单纯的系统破坏,而是专注于步步为营的系统入侵,每一步 ...
  • http://hihocoder.com/contest/hiho49/problem/1 给定无孤立结点图G,若存在一条路,经过图中每边一次且仅一次,该条路称为欧拉路. 一个无向图存在欧拉路当且仅当该图是连通的且有 ...
  • 作者:冯强 说明:本文摘自我参加在职工商管理(本科)毕业论文的片断,由于很多内容涉及到本人所在公司的机密而删节,只作抛砖引玉之用.欢迎转载,但请注明作者和出处.   CRM是Customer Relationship ...
  • 启动监听:lsnrctl start 查看监听:lsnrctl status 停止监听:lsnrctl stop 1.oracle 数据服务器包括:实例进程和数据库:    实例进程包括:memory structu ...
  • 使用一个尽可能在文件中间划分的元素. 一种选择划分元素的方法是从文件中取出三个元素,使用三个元素的中间元素作为划分元素.取数组中的左边元素.中间元素和右边元素,对这三个元素排序.以中间值为划分元素! void qui ...
  •  JDOM是一种适合Java程序员来使用的Java XML解析器,而dom,dom4j适用于不同的语言. 代码如下: process.xml <?xml version="1.0" enco ...