美文网首页
Object-C与JavaScript通信

Object-C与JavaScript通信

作者: program袁 | 来源:发表于2016-07-11 16:54 被阅读30次

关于JS与OC互调的方法,用的较多的有以下两种方式:

一、简单的:

1)OC调用JS:

OC提供了系统方法:

NSString *str = [self.webview stringByEvaluatingJavaScriptFromString:@"testJS();"];

2)JS调用OC

通过改变document.locations=“”,然后回调UIWebview的

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

函数,在上面这个函数中,通过截取NSURLRequest解析js中传递过来的参数,再根据参数来选择早已定义好的方法。

二、iOS7之后的新方法---JavaScriptCore

1.导入framework

点击Linked Frameworks and Libraries 的添加后 选择 JavaScriptCore.framework

选中JavaScriptCore.framework后 点击右下角Add 添加完成

2.导入头文件

OC调用JS比较简单,下面直接可以

JSContext *context = [self.webview valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; //获取执行环境

NSString*jsFunctStr=@"cc()"; //JS内部的方法,OC可以调用JS

[context evaluateScript:jsFunctStr];

JS调用OC有两种方法,方法的不同影响后台JS代码的写法不同

第一种:js里面直接调用方法

JSContext *context = [self.webview valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; //获取执行环境

context[@"log"] = ^() { //定义一个log方法,JS可以调用这个log方法

};

js代码直接调用:

getVipId()

第二种:js里面通过对象调用方法

首先创建一个类   并且规定一个协议

@protocolInviteFriendsActivityProtocol

- (NSString*)getMemberID;

@end

@interfaceInviteFriendsActivity :OWBaseViewController

@property(nonatomic,strong)JSContext*context;

@property(nonatomic,strong)NSString*navTitle;

@property(nonatomic,strong)NSString*url;

@end

.m 类的实现

- (void)getMemberID

{

NSLog(@"getMemberID");

}

webView调用时:

- (void)webViewDidFinishLoad:(UIWebView*)webView

{

self.context= [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

}

self.context[@"InviteFriendsActivity"]=self;

js代码需通过类调用:

InviteFriendsActivity.getMemberID();

相关文章

  • Object-C与JavaScript通信

    关于JS与OC互调的方法,用的较多的有以下两种方式: 一、简单的: 1)OC调用JS: OC提供了系统方法: NS...

  • JavaScript与Object-C交互

    Object-C部分## 1、导入框架和对应的头文件 2、创建类文件,继承NSObject3、编写类JSAndOC...

  • JavaScript Array与String简单使用

    JS对象:数组 对比Object-C中的数组,JavaScript数组有一些不一样的特点JavaScript数组:...

  • JS与原生OC交互通信(一)

    JavaScript与原生通信 UIWebView WKWebView JavaScripCore 第三方库 JS...

  • ajax

    ajax技术的原理是实例化; 使用此对象与后台通信。ajax通信的过程不会影响后续javascript的执行,从而...

  • object-c 与 javascript交互详解

    关键词 : ios OC调用JS ios JS调用OC 在UIWebView中经常会有项目需求: 1.网页调用原生...

  • IOS object-c与javascript交互

    iOS下JS与OC互相调用(一)--UIWebView 拦截URL 最近准备把之前用UIWebView实现的JS与...

  • 正则与json

    正则 ajax与jsonp ajax技术的目的是让javascript发送http请求,与后台通信,获取数据和信息...

  • ajax与jsonp

    ajax与jsonp 简介:ajax技术的目的是让javascript发送http请求,与后台通信,获取数据和信息...

  • ajax与jsonp

    ajax与jsonpajax技术的目的是让javascript发送http请求,与后台通信,获取数据和信息。aja...

网友评论

      本文标题:Object-C与JavaScript通信

      本文链接:https://www.haomeiwen.com/subject/pvljjttx.html