oc调javascript方法(evaluateJavaScript:)&&js给oc发通知
在ios8中引入了WKWebView控件,通过在头文件引用
#import <WebKit/WebKit.h>来使用该控件,
这个控件与oc的原生控件uiwebview很相似,它更方便oc与js的相互通讯。
1.oc调用js方法例子:
通过方法:
- (void)evaluateJavaScript:(NSString *)javaScriptString completionHandler:(void (^)(id,NSError*))completionHandler;
调用js中的方法,例如我们可以这样使用这个方法:
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{
NSString *promptCode = [NSStringstringWithFormat:@"mymethd(\"%@\")",self.data];
[_theWebView evaluateJavaScript:promptCode completionHandler:^(id object,NSError *error) { }];
}
当wkwebview把html加载完之后,调用此方法,其中@"mymethd(\"%@\")",是方法名和要传的参数
2.js给oc发送通知例子:
- (void)viewDidLoad {
NSString *path = [[NSBundlemainBundle]pathForResource:@"htmlname"ofType:@"html"];
NSURL *url = [NSURLfileURLWithPath:path];
NSURLRequest *request = [NSURLRequestrequestWithURL:url];
WKWebViewConfiguration *theConfiguration =
[[WKWebViewConfigurationalloc]init];
[theConfiguration.userContentController
addScriptMessageHandler:selfname:@"myName"];
_theWebView = [[WKWebViewalloc]initWithFrame:self.view.frame
configuration:theConfiguration];
_theWebView.navigationDelegate =self;
//- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation方法代理
[_theWebViewloadRequest:request];
[self.viewaddSubview:_theWebView];
}
function postMyMessageA()
{
var message = {'message' :'You choose the A'};
window.webkit.messageHandlers.myName.postMessage(message);
}
这是oc中收到通知后回调的方法:
- (void)userContentController:(WKUserContentController *)userContentController
didReceiveScriptMessage:(WKScriptMessage *)message
{
NSDictionary * messageDic = [[NSDictionaryalloc]initWithDictionary:message.body];
NSString * messageStr = [messageDicobjectForKey:@"message"];
UIAlertView * messAlert = [[UIAlertViewalloc]initWithTitle:nilmessage:messageStrdelegate:nilcancelButtonTitle:@"yes"otherButtonTitles:nil,nil];
[messAlertshow];
}
oc调javascript方法(evaluateJavaScript:)&&js给oc发通知的更多相关文章
- JS调用OC方法并传值,OC调用JS方法并传值////////////////////////zz
iOS开发-基于原生JS与OC方法互相调用并传值(附HTML代码) 最近项目里面有有个商品活动界面,要与web端传值,将用户在网页点击的商品id 传给客户端,也就是js交互,其实再说明白一点 ...
- 转载 -- 基于原生JS与OC方法互相调用并传值(附HTML代码)
最近项目里面有有个商品活动界面,要与web端传值,将用户在网页点击的商品id 传给客户端,也就是js交互,其实再说明白一点就是方法的互相调用而已. 本文叙述下如何进行原生的JavaScript交互 本 ...
- MXBridge - 插件式JS与OC交互框架
概述 MXBridge,提供一个插件式的JavaScript与Objective-C交互的框架,通过JavaScriptCore实现,插件式扩展Obejctive-C接口以供JavaScript调用. ...
- 【转】使用JavaScriptCore在JS和OC间通信
http://www.cocoachina.com/ios/20160623/16796.html iOS 开发中,我们时不时的需要加载一些 Web 页面,一些需求使用 Web 页面来实现可以更可控, ...
- JS和OC间的通信(使用JavaScriptCore)
JavaScriptCore 时代的通讯 iOS 7 开始,苹果提供了一个叫作 JavaScriptCore 的框架,使用 JavaScriptCore 框架可以实现 OC 和 JS 的互相调用,而不 ...
- iOS JS 交互之利用系统JSContext实现 JS调用OC方法以及Objective-C调用JavaScript方法
ios js 交互分为两块: 1.oc调用js 这一块实现起来比较简单, 我的项目中加载的是本地的html,js,css,需要注意的是当你向工程中拖入这些文件时,选择拷贝到工程中,(拖入的文件夹是蓝色 ...
- iOS JS 交互之利用系统JSContext实现 JS调用oc方法
ios js 交互分为两块: 1.oc调用js 这一块实现起来比较简单, 我的项目中加载的是本地的html,js,css,需要注意的是当你向工程中拖入这些文件时,选择如下操作,(拖入的文件夹是蓝色的, ...
- [iOS Hybrid实践:UIWebView中Html中用JS调用OC方法,OC执行JS代码]
原理: 1.JS调用OC 每次webview执行跳转时都会被iOS给拦截,执行下面函数获得系统允许. 因此可以根据跳转信息转给系统,执行相应功能,比如打开相册等. // 网页中的每一个请求都会被触发 ...
- UIWebView中Html中用JS调用OC方法及OC执行JS代码
HTML代码: <html> <head> <title>HTML中用JS调用OC方法</title> <meta http-equiv=&quo ...
随机推荐
- 【Servlet】使用org.eclipse.jetty实现小型的Servlet服务器
import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpSer ...
- apktool 在mac下的使用 -反编译安卓apk文件
1.下载apktool 点击这里下载 ,里面有两个文件,一个是.jar,一个是自己写的脚本.sh 注:最新的apktool.jar 文件可以点击这里下载 .sh脚本是自写脚本可不用更新最新,下载的ja ...
- background-size ie8不支持怎么解决
background-size这个属性是css3,新增的属性,现在很多浏览器已经支持了,但是IE系列的浏览器却没有支持,比如IE8,下面介绍下如何解决这个问题 在IE浏览器中,可以通过滤镜filter ...
- vmware虚拟机三种网络连接方式
一.概述 vmware为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式).NAT(网络地址转换模式).Host-Only(仅主机模式). 打开vmware虚拟机,我们可以在选项栏的“ ...
- 近期对招聘Android开发者的一些思考
公司要招聘Android开发者,故面试了大概十来个人.由于是小公司,所以来的人大多是90后,比較年轻.90后大概二十三四岁吧,从简历上看都写了一到两年的工作经验. 也由于是小公司,所以对工作经验这些没 ...
- js 万恶之源 是否滚动到底部?
let scrollHandle = (el) => { // 如果已经滚到底部了 if (el.scrollHeight - el.scrollTop === el.clientHeight) ...
- Echarts 如何与 百度地图结合?
官方demo:http://echarts.baidu.com/examples/editor.html?c=map-polygon 需要按顺序加载以下几个资源,然后就可以在echarts配置中使用 ...
- Java多线程框架Executor详解
原文链接 http://www.imooc.com/article/14377 为什么引入Executor线程池框架new Thread()的缺点 每次new Thread()耗费性能调用ne ...
- U811.1接口EAI系列之三--采购订单生成--VB语言
采购订单业务,下面是具体代码与参数说明: 下面调用的通用方法在: http://www.cnblogs.com/spring_wang/p/3393147.html 作者:王春天 2013-10-31 ...
- 五分钟读懂UML类图(转)
平时阅读一些远吗分析类文章或是设计应用架构时没少与UML类图打交道.实际上,UML类图中最常用到的元素五分钟就能掌握,下面赶紧来一起认识一下它吧: 一.类的属性的表示方式 在UML类图中,类使用包含类 ...