OC原生代码/webview与js/网页交互的最好方式
2017-05-09 15:47
429 查看
利用OC提供的<JavaScriptCore/JavaScriptCore.h>去实现js与oc的交互
第一步继承代理
@interface WebViewViewController ()<UIWebViewDelegate>
第二步
self.webCtrl.delegate =
self; //设置代理
第三步 在实现的协议方法里写上定义js对象的方法
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
JSContext *context = [self.webCtrl valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
//定义好JS要调用的方法
IOSBridge = [[GLBL_APP alloc] init];
context[@"IOSBridge"] = IOSBridge;
}
第四步 定义和实现js相应的类和实现相应功能代码
#import
<Foundation/Foundation.h>
#import
<JavaScriptCore/JavaScriptCore.h>
@protocol
PublicProtocol<JSExport>
//允许网页app访问的对象属性/方法
-(void)login;
-(void)shareSong:(NSString*)songId :(NSString*)callback;
@end
@interface GLBL_APP : NSObject<PublicProtocol>
@property(nonatomic,strong)NSString *callbackName;
@end
#import
"GLBL_APP.h"
@interface GLBL_APP()
{
}
@end
@implementation GLBL_APP
//去登录
-(void)login{
dispatch_async(dispatch_get_main_queue(), ^{//始终在主进程中进行
if(![KeychainManager islogin]){
[KeychainManager gotoLogin];
}
});
}
//分享
-(void)shareSong:(NSString*)songId :(NSString*)callback{
if(![KeychainManager islogin]){
[KeychainManager gotoLogin];
return;
}
//分享
ShareView *shareView = [[ShareView alloc]initWithFrame:CGRectZero];
//赋值歌曲信息
[UserServices
getSongInfoWithSongId:songId userId:[KeychainManager readUserId] completionBlock:^(int result, id responseObject) {
NSDictionary *data=responseObject[@"data"];
shareView.songData = data;
}];
// SongModel *playingMusic = [MusicPlayTools shareMusicPlay].model;
// dfShareView.songData = [playingMusic dictionaryRepresentation];
[shareView showView];
if(callback){
self.callbackName = callback;
}
}
@end
第五步在js中调用
if(IOSBridge){
IOSBridge.shareSong(1207,'test');
}
第六步 在oc里执行JS
NSString *textJS = [NSString stringWithFormat:@"%@()",actionName];
[context evaluateScript:textJS];
}
$(".MathJax").remove();
第一步继承代理
@interface WebViewViewController ()<UIWebViewDelegate>
第二步
self.webCtrl.delegate =
self; //设置代理
第三步 在实现的协议方法里写上定义js对象的方法
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
JSContext *context = [self.webCtrl valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
//定义好JS要调用的方法
IOSBridge = [[GLBL_APP alloc] init];
context[@"IOSBridge"] = IOSBridge;
}
第四步 定义和实现js相应的类和实现相应功能代码
#import
<Foundation/Foundation.h>
#import
<JavaScriptCore/JavaScriptCore.h>
@protocol
PublicProtocol<JSExport>
//允许网页app访问的对象属性/方法
-(void)login;
-(void)shareSong:(NSString*)songId :(NSString*)callback;
@end
@interface GLBL_APP : NSObject<PublicProtocol>
@property(nonatomic,strong)NSString *callbackName;
@end
#import
"GLBL_APP.h"
@interface GLBL_APP()
{
}
@end
@implementation GLBL_APP
//去登录
-(void)login{
dispatch_async(dispatch_get_main_queue(), ^{//始终在主进程中进行
if(![KeychainManager islogin]){
[KeychainManager gotoLogin];
}
});
}
//分享
-(void)shareSong:(NSString*)songId :(NSString*)callback{
if(![KeychainManager islogin]){
[KeychainManager gotoLogin];
return;
}
//分享
ShareView *shareView = [[ShareView alloc]initWithFrame:CGRectZero];
//赋值歌曲信息
[UserServices
getSongInfoWithSongId:songId userId:[KeychainManager readUserId] completionBlock:^(int result, id responseObject) {
NSDictionary *data=responseObject[@"data"];
shareView.songData = data;
}];
// SongModel *playingMusic = [MusicPlayTools shareMusicPlay].model;
// dfShareView.songData = [playingMusic dictionaryRepresentation];
[shareView showView];
if(callback){
self.callbackName = callback;
}
}
@end
第五步在js中调用
if(IOSBridge){
IOSBridge.shareSong(1207,'test');
}
第六步 在oc里执行JS
NSString *textJS = [NSString stringWithFormat:@"%@()",actionName];
[context evaluateScript:textJS];
}
$(".MathJax").remove();
相关文章推荐
- iOS 基于JavaScriptCore 不等webView加载完毕就交互,网页获取原生内容。 webView的高级用法之JS交互,js与oc的相互调用
- 源码推荐(01.20B):JS与OC中Webview交互, 两行代码搞定TouchID验证
- webView网页中JS调原生OC方法与JS注入
- iOS OC与H5网页交互之OC传值给JS(WKWebView)
- iOS开发中OC与H5网页交互之OC传值给JS(WKWebView)
- Android - webview原生和JavaScript(js)交互传值的几种方式
- iOS原生代码通过webView与js脚本交互
- android 通过webView,简单的通过网页唤起本地界面,如果比较多的话最好不要用原生的webView和js去搭建,用框架去做
- ios js与oc原生WKWebView方法注入及交互传值
- 通过WebViewJavascriptBridge实现OC与JS交互
- android webview 中网页数据与js交互
- android中利用webview调用网页上的js代码和注意事项
- OC 与JS(WebView)交互
- 通过WebViewJavascriptBridge实现OC与JS交互
- iOS 8 WkWebView 网页的配置和前进,后退,js 交互和进度条的加载
- 通过WebViewJavascriptBridge实现OC与JS交互
- ios中webview与js交互代码
- Android_webview与js的交互方式
- android学习之 webview 原生与js的交互
- IOS 与 Android WebView 中 JS 调用原生代码