美文网首页
【MUI】JavaScript和Object-C相互调用

【MUI】JavaScript和Object-C相互调用

作者: 雨声不吃鱼 | 来源:发表于2016-10-14 12:15 被阅读0次

    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);

    }

    相关文章

      网友评论

          本文标题:【MUI】JavaScript和Object-C相互调用

          本文链接:https://www.haomeiwen.com/subject/cyvgyttx.html