OC与JavaScript的交互

stringByEvaluatingJavaScriptFromString的用法,它的功能非常的强大,用起来非常简单,通过它我们可以很方便的操作uiwebview中的页面元素。

UIWebView是iOS最常用的8SDK之一,它有一个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函数。

时间: 2024-08-14 00:57:01

OC与JavaScript的交互的相关文章

OC和JS的交互---JavaScriptCore

JavaScriptCore的简单介绍 JavaScriptCore是iOS7提供的原生框架,可以让Objective-C和JavaScript提供简单直接的交互. JavaScriptCore的使用 导入JavaScriptCore.framework 在需要使用的类中引入头文件 #import <JavaScriptCore/JavaScriptCore.h> 点开头文件,我们可以看到 #import "JSContext.h" #import "JSValu

OC与JS的交互

关于oc与js的交互,本人用的是原生类 JSExport 实现. 本人不擅长文字描述,故直接上代码 1,首先创建一个继承 NSObject的类,创建代理,实现代理方法,.h文件 1 #import <Foundation/Foundation.h> 2 #import <JavaScriptCore/JavaScriptCore.h> 3 @protocol JSObjcDelegate1 <JSExport> 4 - (void)getUser:(NSString *

OC与JS的交互(iOS与H5混编)

在开发过程中,经常会出现需要iOS移动端与H5混编的使用场景. iOS中加载html网页, 可以使用UIWebView或WKWebView. 本篇博客将介绍两种控件使用过程中如何实现OC与JS的交互. UIWebView delegate 协议方法 //网页即将开始加载 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewN

实现OC与JS的交互

oc-->js  stringByEvaluatingJavaScriptFromString,其参数是一NSString 字符串内容是js代码(这又可以是一个js函数.一句js代码或他们的组合),当js函数有返回值或一句js代码有值返回可通过stringByEvaluatingJavaScriptFromString的返回值获取. js-->oc 利用webView的重定向原理(即重新在js中指定document.location的值,此为一url),只要在这个url字符串中按自定义的规则指

本地java代码和javascript进行交互(java和js互调)

在android的开发过程中,有很多时候需要用到本地java代码和javascript进行交互.android对交互进行了很好的封装,在开发中我们可以很简单的用java代码调用webview中的js,也可以用webview中的js来调用本地的java代码,这样我们可以实现很多原来做不了的功能,比如点击网页上的电话号码后,手机自动拨打电话,点击网页中的笑话,自动发送短信等. 废话不多说,这次教程的目标如下 android 中的java代码调用webview里面的js脚本 webview中的js脚本

【ActionScript】Flash与网页的交互,ActionScript与JavaScript的交互

Flash是可以轻松与网页交互数据的,不然为何Flash会有这么大的生命力呢?仅仅是这样编程比較麻烦而已,又要调试Flash,然后又要放到server上调试. 只是这种方式可以收到非常好的效果.Flash强大的画图功能.图形功能,可以与网页的參数传递联系起来,配合后端的server语言,可以收到非常大效果. 以下举个样例用ActionScript3.0来说明这个问题,例如以下图: IE6效果: 火狐效果: 一旦浏览器装上Flash插件,Flash就行轻松与网页互通消息. 不管在不论什么浏览器,如

PHP学习笔记-PHP与JavaScript的交互

转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/51814192 本文出自:[顾林海的博客] 前言 前两篇笔记PHP学习笔记-PHP与Web页面的交互1和PHP学习笔记-PHP与Web页面的交互2讲了PHP与Web的交互,JavaScript在Web系统中得到了非常广泛的应用,因此接下来记录的是PHP与JavaScript的交互. 认识JavaScript JavaScript是由Netscape Communicat

OC和UIwebView的交互

OC的UIwebView的交互 1.html5 是一个vedio开始和end的 2. JS交互 潜入在网页内部的脚本   可以边读边执行 safari --- 偏好---高级设置---高级----在菜单栏中点击开发 ---开发  ----web检查器--这个时候可以在控制台调试 3.OC中storyboard中的一种约束方式 突入了一个webview 然后选择  右边 第三个   add missing’ 仅仅适合控件很少的时候用 先把整个页面加载到内存   再去执行JS的方法函数 UIwebV

16_android_WebView与Javascript的交互

在WebView中不仅可以运行HTML代码,更重要的是,WebView可以与Javascript互相调用.也就是说,在Javascript中可以获取WebView的内容,与此同时,在WebView中也可以调用Javascript里面的方法. 下面通过如下案例来分析WebView与javascript的交互 1.第一步在布局文件中声明WebView(activity_main.xml) <RelativeLayout xmlns:android="http://schemas.android