总结: OC调用JS方法和给JS赋值
2017-07-07 17:45
405 查看
首先说明一下:
后台经常会给到我们这样的JS方法:app.exit();
app.logout();
save(cardno); 等类似的方法
这类方法我们可以通过实现了JSExport协议来调用它;
首先创建<NSObject> 类
.H文件中写:
#import <Foundation/Foundation.h>
#import <JavaScriptCore/JavaScriptCore.h>
//首先创建一个实现了JSExport协议的协议
@protocol JSMutualDataProtocol <JSExport>
//退出登录
-(void)logout;
@end
//退出登录协议
@protocol LogOutDelegate <NSObject>
-(void)logout;
@end
@interface JSMutualData : NSObject<JSMutualDataProtocol>
@property(nonatomic,weak)id<LogOutDelegate>logOutDelegate; //退出登录协议
@end
.M文件写:
//退出登录
-(void)logout
{
[_logOutDelegate logout];
}
最后去webView控制器页面实现当前协议
签协议<LogOutDelegate>
然后在
WebViewDidFinishLoad 方法中实现如下方法:
//首先创建JSContext 对象(此处通过当前webView的键获取到jscontext)
JSContext *context=[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
//JS方法,通过对象方法获取点击方法
JSMutualData *MutualData = [[JSMutualData alloc]init];
context[@"app"] =
MutualData;
[MutualData setLogOutDelegate:(id<LogOutDelegate>)self];
最后实现类方法:
-(void)logout
{
NSLog(@"````````````logout");
}
还有上面提到的save(cardno);
这样的方法,可以通过stringByEvaluatingJavaScriptFromString 方法给cardno赋值
方法如下:
- (void)WebViewDidFinishLoad:(UIWebView *)webView
{
[webView stringByEvaluatingJavaScriptFromString:@"save('12345');"];
}
这样就可以给JS中的save(cardno); 方法赋值了,很好用
还有另外后台给的方法: app.onLogin(mm,bb);
通过JS方法获得mm , bb的值
还是上面那个方法一样的, 可以通过JSExport协议 得到值
之前//退出登录
-(void)logout;
方法
换成下面这个方法:
//获取登录账号和密码
-(void)on:(NSString *)account Login:(NSString *)password;
.m文件写:
-(void)on:(NSString *)account Login:(NSString *)password
{
[_LoginDelegate on:account Login:password];
}
然后去webView控制器上面签协议,写方法就可以了
后台经常会给到我们这样的JS方法:app.exit();
app.logout();
save(cardno); 等类似的方法
这类方法我们可以通过实现了JSExport协议来调用它;
首先创建<NSObject> 类
.H文件中写:
#import <Foundation/Foundation.h>
#import <JavaScriptCore/JavaScriptCore.h>
//首先创建一个实现了JSExport协议的协议
@protocol JSMutualDataProtocol <JSExport>
//退出登录
-(void)logout;
@end
//退出登录协议
@protocol LogOutDelegate <NSObject>
-(void)logout;
@end
@interface JSMutualData : NSObject<JSMutualDataProtocol>
@property(nonatomic,weak)id<LogOutDelegate>logOutDelegate; //退出登录协议
@end
.M文件写:
//退出登录
-(void)logout
{
[_logOutDelegate logout];
}
最后去webView控制器页面实现当前协议
签协议<LogOutDelegate>
然后在
WebViewDidFinishLoad 方法中实现如下方法:
//首先创建JSContext 对象(此处通过当前webView的键获取到jscontext)
JSContext *context=[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
//JS方法,通过对象方法获取点击方法
JSMutualData *MutualData = [[JSMutualData alloc]init];
context[@"app"] =
MutualData;
[MutualData setLogOutDelegate:(id<LogOutDelegate>)self];
最后实现类方法:
-(void)logout
{
NSLog(@"````````````logout");
}
还有上面提到的save(cardno);
这样的方法,可以通过stringByEvaluatingJavaScriptFromString 方法给cardno赋值
方法如下:
- (void)WebViewDidFinishLoad:(UIWebView *)webView
{
[webView stringByEvaluatingJavaScriptFromString:@"save('12345');"];
}
这样就可以给JS中的save(cardno); 方法赋值了,很好用
还有另外后台给的方法: app.onLogin(mm,bb);
通过JS方法获得mm , bb的值
还是上面那个方法一样的, 可以通过JSExport协议 得到值
之前//退出登录
-(void)logout;
方法
换成下面这个方法:
//获取登录账号和密码
-(void)on:(NSString *)account Login:(NSString *)password;
.m文件写:
-(void)on:(NSString *)account Login:(NSString *)password
{
[_LoginDelegate on:account Login:password];
}
然后去webView控制器上面签协议,写方法就可以了
相关文章推荐
- AGS9.2中Toolbar的自定义ToolbarItem直接调用ADF的JS方法总结
- js调用后台,后台调用前台等方法总结
- js调用后台,后台调用前台等方法总结
- js调用.net后台事件,和后台调用前台等方法总结
- js调用后台,后台调用前台等方法总结
- 关于.NET TextBox 前台JS赋值 后台得不到值的处理方法总结
- js调用.net后台事件,和后台调用前台等方法总结
- Winform WebBrowser自定义方法供js调用总结
- js调用.net后台事件,和后台调用前台等方法总结
- 每日总结:每个 GROUP BY 表达式必须至少包含一个不是外部引用的列、加载页面时调用Js方法、调用Js文件中的方法
- js 调用服务器端方法总结
- js调用.net后台事件,和后台调用前台等方法总结
- 总结Silverlight与HTML页面交互基本方法(js调用Silverlight方法/属性 和Silverligth调用页面js方法)
- js调用.net后台事件,和后台调用前台等方法总结(转载,方法没试过,不过先收下了 )
- js调用cs中函数的方法 和 在cs中调用js函数的方法〔总结〕
- js调用.net后台事件,和后台调用前台等方法总结
- vs2005调用js脚本方法总结
- 总结Silverlight与HTML页面交互基本方法(js调用Silverlight方法/属性)
- HTML中超链接调用JS的方法总结
- Winform WebBrowser自定义方法供js调用总结