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 ...
随机推荐
- k8s官方安装版本
一.概述 官方安装链接:https://kubernetes.io/docs/getting-started-guides/kubeadm/ 之前使用是yum直接安装组件,现由kubeadm来自动安装 ...
- 【MySQL】MySQL存储过程介绍
目录结构: contents structure [-] 存储过程简介 关于MySQL的存储过程 MySQL存储过程的创建 格式 声明分割符 参数 变量 注释 MySQL存储过程的调用 MySQL存储 ...
- Linux安装ElasticSearch-2.2.0
1.下载ElasticSearch-2.2.0安装包 https://www.elastic.co/downloads/elasticsearch 2.安装ElasticSearch-2.2.0 rp ...
- hibernate 注解 boolean问题解决方案
1.JPA本身是不支持boolean.可以用Hibernater自带的标签.修改如下. @Column(name = "manager_log") @org.hibernate.a ...
- linux 查看 cpu个数 核心数 线程数
深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/43935535 (1).查看cpu信息 [root@xckydb ~]# cat ...
- [转]greenplum(postgresql)之数据字典
greenplum是基于postgresql开发的分布式数据库,里面大部分的数据字典是一样的.我们在维护gp的时候对gp的数据字典比较熟悉,特此分享给大家.在这里不会详细介绍每个字典的内容,只会介绍常 ...
- uiautomatorviewer 查看元素新思路
用adb 命令把图片和uix获取出来,再导入uiautomatorviewer adb shell uiautomator dump /data/local/tmp/uidump.uixadb pul ...
- Talend 显示隐藏控件-thashmap
默认情况下,thashmap插件是隐藏的,通过如下的方式可以将隐藏的hashmap插件显示出来:
- python 并发编程(socketserver)
下面的例子是简单的ssh 登录,其实也就是客户端把指令发送给服务器.服务器把结果返还给客户端,客户端再在终端展现 服务端代码: #Author:BigBao #Date:2018/7/18 # 我们之 ...
- 了解HTTP协议栈(实践篇)
关于http协议的理论知识,我在这里就不详细说明了,具体下面给出的链接有.接下来都是用具体的操作显示的,各位可以结合起来看. 一.使用nc打开端口,并使用浏览器进行访问 (对应文章中的HTTP协议详解 ...