关于js调用oc

首先:要在项目导入

JavaScriptCore.frameWork

在webview的控制器.h中引用

#import <JavaScriptCore/JavaScriptCore.h>

然后:我们可以在

- (void)webViewDidFinishLoad:(UIWebView *)webView方法中

通过

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

获取一个JSContext 对象

这个对象我理解为 js的控制中心

现在有两种方法让js调用我们自己的方法

1.直接给context对象赋值一个block方法:

context[@"block"] = ^(参数){};

js可以直接调用:

block(参数)

2.将webView控制器的self对象 赋值给context对象的一个子类 :

context[@"zhaozhi"] = self;

这样js就可以通过对象调用方法,但是要在.h中写一个协议,方法写在里面:

@protocol WebViewJSExport <JSExport>

-(void)goToExplosionDetail:(NSString *)message;

@end

控制器遵守这个协议

js就可以调用这个方法了,调用代码:

zhaozhi.method(***);

时间: 2024-10-16 20:04:51

关于js调用oc的相关文章

UIWebView中Html中用JS调用OC方法及OC执行JS代码

1.HTML页面 1 <html> 2 3 <head> 4 5 <title>HTML中用JS调用OC方法</title> 6 7 <meta http-equiv="Content-Type"content="text/html; charset=UTF-8"> 8 9 <script> 10 11 function test() 12 13 { 14 15 alert("test

iOS JS 交互之利用系统JSContext实现 JS调用oc方法

ios js 交互分为两块: 1.oc调用js 这一块实现起来比较简单, 我的项目中加载的是本地的html,js,css,需要注意的是当你向工程中拖入这些文件时,选择如下操作,(拖入的文件夹是蓝色的,相对路径),不然css,js 的路径会存在问题 加载本地html: oc调用js:一句代码搞定 2.js 调用oc js调用oc又分为两种: 1.js端是直接调用方法 这里就要说到ios7才推出的一个新的api    JavaScriptCore,首先我们引入这个类,并初始化一个JSContext对

[ios]js调用oc代码(oc)

用途:在ios开发中,经常回用到js调用oc代码的时候,例如在网页上有个拍照和打电话的按钮,想打开系统自带的拍照和电话的时候,就需要用到js调用oc代码的功能. 实现原理:在webView加载html网页的时候,没当发送一个请求,就会调用<UIWebViewDelegate>代理的 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIW

webview的使用以及js调用OC传参

webview如何想要js和oc交互,需要使用代理方法 ,并且需要和后台协定规则 -(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{ NSString *url = request.URL.absoluteString; NSLog(@"========%@&quo

js调用oc方法 UIWebView 跳 到另一个UIWebView

1 // 2 // BusinessListViewController.h 3 // LouLiLouWai 4 // 5 // Created by jouhu on 15/7/31. 6 // Copyright (c) 2015年 jouhu. All rights reserved. 7 // 8 9 #import <UIKit/UIKit.h> 10 11 @interface BusinessListViewController : UIViewController 12 @p

JS调用OC方法

- (void)myMethod:(CDVInvokedUrlCommand*)command { NSString* echo = [command.arguments objectAtIndex:0]; NSLog(@"%@",echo); POSJiaoyiViewController *sele=[[POSJiaoyiViewController alloc] init]; [self.viewController.navigationController pushViewCo

转载 -- 基于原生JS与OC方法互相调用并传值(附HTML代码)

最近项目里面有有个商品活动界面,要与web端传值,将用户在网页点击的商品id 传给客户端,也就是js交互,其实再说明白一点就是方法的互相调用而已. 本文叙述下如何进行原生的JavaScript交互 本文包括JS调用OC方法并传值,OC调用JS方法并传值 本来想把html放进服务器里面,然后访问,但是觉得如果html在本地加载更有助于理解,特把html放进项目里 HTML代码 <!DOCTYPE html> <html> <head> <meta charset=&

IOS:ios和javaScript相互调用 oc和js

文章来自:http://blog.csdn.net/intbird 相比android和js进行交互,ios和js进行交互是比较方便的; android和js进行交互,请看这里: http://blog.csdn.net/intbird/article/details/42295453 android和js进行交互框架,看这里: http://blog.csdn.net/intbird/article/details/46461203 这里看ios和js的交互 0.上个丑图 1,oc调用js,超

iOS下JS与OC互相调用(二)--WKWebView 拦截URL

在第一篇文章 iOS下JS与OC互相调用(一)中讲述了使用UIWebView拦截URL的方式来处理JS与OC交互. 由于UIWebView比较耗内存,性能上不太好,而苹果在iOS 8中推出了WKWebView. 同样的用WKWebView也可以拦截URL,做JS 与OC交互.关于WKWebView与UIWebView的对比,大家请自动百度或者google. WKWebView 拦截URL WKWebView 与 UIWebView 拦截URL 的处理方式基本一样.除了代理方法和WKWebView