ios 与 js交互一点心得
来源:互联网 发布:河南自考网络助学平台 编辑:程序博客网 时间:2024/06/08 13:34
我用的是苹果原生的--------->JavaScriptCore.framework。
首先要导入这个库,老司机都知道怎么导入的就不介绍了。
第二创建一个类 JavaScriptObject(我自己起的名字,你可以随意起)继承于NSObject, 遵守JavaScriptObjectExport(我自己起的名字,你可以随意起)协议。
JavaScriptObjectExport协议需要自己去创建,该协议继承于 JSExport,
JavaScriptObjectExport负责声明和js同名的方法,一定要同名否则不调用;
JavaScriptObject负责实现具体的操作。
在WebView的代理方法里面实现(别忘了导入头文件#import <JavaScriptCore/JavaScriptCore.h>):
JSContext *context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; javaScriptObj = [[JavaScriptObject alloc] init]; javaScriptObj.javaScriptObjViewC = self; javaScriptObj.javaScriptObjWebView = webView; context[@"iOS"] = javaScriptObj;(iOS 是iOS与js规定好的,相当于一个对象)
就可以交互了。
例(有返回值的):
js代码
function get_app_version() { iOS.get_app_version();}
iOS代码 在JavaScriptObjectExport 声明 - (NSString *)get_app_version; // 获取应用版本号
JavaScriptObject 实现
- (NSString *)get_app_version{ NSString *bundleStr = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; NSString *returnBundleStr = [NSString stringWithFormat:@"ios_%@",bundleStr]; return returnBundleStr;}
例(js带参数的):
js代码
function db_insert() { iOS.db_insert("wq 1028 key","1028 value"); }
iOS代码 在JavaScriptObjectExport 声明 - (void)db_insert:(NSString *)name :(NSString *)value; // 插入数据
- (void)db_insert:(NSString *)name :(NSString *)value [DatabaseOperations deleteDataWithName:name]; [DatabaseOperations insertDataWithName:name withValue:value];}
ps:DatabaseOperations是我自己写的一个数据库存储类
demo下载地址: https://github.com/SiGuozhu/iOSWithJsInteraction
3 0
- ios 与 js交互一点心得
- ios与H5(JS)交互心得
- ios 与js 交互
- iOS 与 JS 交互
- iOS 与 js 交互
- ios与js 交互
- iOS与JS交互
- iOS 与 JS 交互
- JS 与 iOS 交互
- IOS 与 JS 交互
- ios与js交互
- iOS与JS交互
- iOS与JS交互
- iOS与JS交互
- iOS与js交互
- js、ios交互的一点小问题
- iOS与js交互总结
- ios UIWebView与JS交互
- iOS之线程间通信
- XCode快捷键
- 理解RESTful架构
- JQuery 日期选择框,精确到时分秒类型。
- C 语言 指针变量笔记
- ios 与 js交互一点心得
- SurfaceView实现点赞效果
- javascript 得到当前日期、时间、星期,代码非常短
- u-boot移植笔记
- xcode历史版本下载
- JVM调优实践-Tomcat调优
- 汉诺塔问题(递归)
- TimesTen官方博客-中文版和英文版
- codeforces #356 Div2