iOS UIWebView中Objective-C与Javascript的深层交互(一)
2016-06-07 14:37
253 查看
最近项目中有用到OC与JS的交互,刚开始时候觉得只用一个函数就能搞定交互,即 stringByEvaluatingJavaScriptFromString 后边为JS代码转化的字符串,后来随着项目的内容的增多,逐渐发现功能有些捉襟见肘,网上搜索了一些方法,解决了问题,先总结如下文,借鉴下经验,方便记忆的同时,也希望能稍微帮助到一点别人
正常的WebView的代理方法就不再多做赘述,iOS7之前没有开放webkit,好多东西做起来比较麻烦,现在简单了好多,一般在返回bool值的代理函数中做判断该页面是不是可以加载,加载完成后有时候需要做一些操作,比如我们这次的监听登录按钮,然后调用本地方法,这个时候之前的方法可能就不能满足需求了。废话不多说了,说正事
OC调用JS方法
需要先加入javascript的依赖库
JavaScriptCore.framework ,然后导入头文件#import <JavaScriptCore/JavaScriptCore.h>
。此时就能做操作了,
首先,创建JSContext的对象,通过webview获取到jscontext
JSContext *context=[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
//获取jscontext对象,上下文
NSString *alertStr=@"alert('测试的代码')"; //准备执行的js代码
[context evaluateScript:alertStr];//通过oc方法调用js的alert 调用后既执行js的方法
此时会弹出一个类似与iOS种alertview的对话框,若是想调用其他的JS方法,准备好js的代码,然后利用上下文调用该方法就实现了OC调用JS功能的实现。 如实则完成了IOS中OObjective-C对Javascript方法的调用
正常的WebView的代理方法就不再多做赘述,iOS7之前没有开放webkit,好多东西做起来比较麻烦,现在简单了好多,一般在返回bool值的代理函数中做判断该页面是不是可以加载,加载完成后有时候需要做一些操作,比如我们这次的监听登录按钮,然后调用本地方法,这个时候之前的方法可能就不能满足需求了。废话不多说了,说正事
OC调用JS方法
需要先加入javascript的依赖库
JavaScriptCore.framework ,然后导入头文件#import <JavaScriptCore/JavaScriptCore.h>
。此时就能做操作了,
首先,创建JSContext的对象,通过webview获取到jscontext
JSContext *context=[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
//获取jscontext对象,上下文
NSString *alertStr=@"alert('测试的代码')"; //准备执行的js代码
[context evaluateScript:alertStr];//通过oc方法调用js的alert 调用后既执行js的方法
此时会弹出一个类似与iOS种alertview的对话框,若是想调用其他的JS方法,准备好js的代码,然后利用上下文调用该方法就实现了OC调用JS功能的实现。 如实则完成了IOS中OObjective-C对Javascript方法的调用
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)