UIWebview与js交互[转]

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函数。

 

 http://www.cnblogs.com/pengyingh/articles/2350304.html

 

欢迎加群互相学习,共同进步。QQ群:iOS: 58099570 | Android: 330987132 | Go:217696290 | Python:336880185 | 做人要厚道,转载请注明出处!http://www.cnblogs.com/sunshine-anycall/p/4129380.html

时间: 2024-10-29 11:23:26

UIWebview与js交互[转]的相关文章

WKWebView新特性及JS交互

声明 本博文原始地址在: http://mp.weixin.qq.com/s?__biz=MzIzMzA4NjA5Mw==&mid=400327803&idx=1&sn=2a09fa94dd605a9f03bbc16f998e5717#rd 本博客不会在此处更新文章,请关注微信公众号,更新的内容只会是在原文更新. 引言 一直听说WKWebView比UIWebView强大许多,可是一直没有使用到,今天花了点时间看写了个例子,对其API的使用有所了解,为了日后能少走弯路,也为了让大家更

php和js交互一例

js|交互 php和js交互一例<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>Untitled</title> <script language="JavaScript"> <!-- function rec_delete(message

iOS与JS交互实战篇(Swift/ObjC)

前言 ObjectiveC与Js交互是常见的需求,可对于新手或者所谓的高手而言,其实并不是那么简单明了.这里只介绍iOS7.0后出来的JavaScriptCore framework. 关于JavaScriptCore 本教程中所涉及到的几种类型: JSContext, JSContext是代表JS的执行环境,通过-evaluateScript:方法就可以执行一JS代码 JSValue, JSValue封装了JS与ObjC中的对应的类型,以及调用JS的API等 JSExport, JSExpor

webview和js交互

今天主要总结两点:一是使用Js去调用客户端公有方法,二是从客户端调用Js中的方法 一.JS调用客户端公有方法 上例子:(PS:不会写JS,就网上找了一段js代码) 新建项目,在项目的assets文件夹下创建一个test.html: [HTML] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 <body> <a>Web与Js交互:点击我,来调用客户端的show方法吧</a> <scri

javascript-安卓开发webview与js交互

问题描述 安卓开发webview与js交互 关于安卓webview与js交互的问题,我这里的附件是网上下载的一抽奖网页,我想把它加载在webview里,然后在webview里运行后能够弹出来相应的提示(Toast弹出),比如抽到苹果,就弹出来个Toast,提示苹果可能网页需要稍微修改一下,无奈自己做不出来啊,请大神帮助,最好上个成品,我这里实在是没有C币,上不了分了 附件地址 http://pan.baidu.com/share/link?shareid=3352172372&uk=406603

webview与js交互

 对于android初学者应该都了解webView这个组件.之前我也是对其进行了一些简单的了解,但是在一个项目中不得不用webview的时候,发现了webview的强大之处,今天就分享一下使用webview的一些经验.   1.首先了解一下webview. webview介绍的原文如下:A View that displays web pages. This class is the basis upon which you can roll your own web browser or

javascript-webview与js交互相关问题

问题描述 webview与js交互相关问题 webview加载页面,然后通过与js交互获取页面html代码,然后对获取到的html源码进 行操作,但获取html代码总是比较耗时,将方法内容写在异步任务里面也不行,处理 代码的方法总是会在获取到代码之前执行,不知道哪位有可以解决的办法?在这先谢谢啦 解决方案 自己做出来了,要讲方法写在webview的onpagefinish方法中就不会出错了 解决方案二: http://www.cnblogs.com/vanezkw/archive/2012/07

关于FlexPaper 2.1.2版本 二次开发 Logo 、打印、搜索、缩略图、添加按钮、js交互、右键菜单等相关问题

原文:关于FlexPaper 2.1.2版本 二次开发 Logo .打印.搜索.缩略图.添加按钮.js交互.右键菜单等相关问题 先废话几句.最近用到文档在线浏览功能,之前用的是print2flash(一个工具,文档直接转flash,自带翻页搜索等一系列功能),由于无法与js进行交互,所以改用flexpaper. 由于之前没接触过Flex,了解不多,所以文章难免有不合适的地方.希望各位给予指正. 首先感谢ajava.org的mark,一系列文章有很多的帮助,少走很多弯路.   开发工具:1.Ado

Android五分钟轻松教会你掌握WebView与JS交互

背景:Android API中提供了WebView组件来实现对html的渲染.现在HTML5.CSS3.jS的相关开发技术,以及数据交换格式json/XML.Web开发工程师的技能.为了减少对android的过度依赖,通常会在原生的Android 嵌入部分的html了. 这样一来就避免不了为js数据交互. 我们新建一个简单的布局,只有一个webview控件 <android:id="@+id/webView"  android:layout_width="fill_pa