JS调用OC
例一
在testDemo.m中
oc代码:
+(void)getText:(NSString*) text
{
NSLog(@"获取内容:%@",text);
}
js代码:
var myString = plus.ios.importClass("testDemo").getText("content");
oc代码:
-(void)getSecondText:(NSString*) text{}
js代码:
var myClass = plus.ios.importClass("testDemo");
var newStr = new myClass();
var mySecondString = newStr.getSecondText("content");
例二
oc代码:
[[NSUserDefaultsstandardUserDefaults]setBool:true forKey:@"demo_test"];
js代码:
var myBool =
plus.ios.importClass("NSUserDefaults").standardUserDefaults().boolForKey("demo_test");
OC调用JS
在MUI中,oc调用js不太好,有一个变通的方式就是函数在oc中实现,在js中,使用js调用oc的结果,如果非要用oc调用js的话,可以使用oc中的webview的一个stringByEvaluatingJavaScriptFromString的方法,但是这个相当于调用某个html文件中的某个js函数,其他的函数并未调用!
比如页面在demo.html中,demo.html中有一个变量aaa需要在demo.html的其他函数中使用,如果这里oc直接调用了js的某个函数,去改变了aaa值,其实只是修改了当前页面的aaa值,并没有对demo.html整个逻辑产生影响,所以目前的方案就是oc不去调用js的函数,使用js调用oc的结果。
oc代码:
-(void)testjs {
self.wysweb=[[UIWebViewalloc]init];
NSURL*url=[[NSBundlemainBundle];
URLForResource:@"Pandora/apps/HelloH5/www/index.html"withExtension:nil];
NSURLRequest * request = [NSURLRequestrequestWithURL:url];
self.wysweb.delegate=self;
[self.wysweb loadRequest:request];
}
-(void)webViewDidFinishLoad:(UIWebView*)webView {
[self.wysweb stringByEvaluatingJavaScriptFromString:@"jstest1();"];
[self.wysweb stringByEvaluatingJavaScriptFromString:@"jstest2(\"wys\");"];
}
js代码:
function jstest1() {
alert("success");
}
function jstest2(string) {
alert(string);
}
网友评论