美文网首页
OC与JS交互

OC与JS交互

作者: SunshineAutumn | 来源:发表于2016-12-26 15:09 被阅读24次

    软件里用到了加载HTML网页,也就涉及到了OC与JS的交互,在这里简单的说一下交互(运用IOS7之后新添加的库JavaScriptCore所做的交互)。

    JS调用OC#

    1.首先导入JavaScriptCore的库,遵循JavaScriptCore的代理
    #import <JavaScriptCore/JavaScriptCore.h>
    2.获取JS的上下文(写在webView的webViewDidFinishLoad方法里面)

    JSContext *context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
    

    3.定义JSExport 协议(这里的协议是带参数的,如果不需要可以把参数去掉)

    @protocol JSDemoExport <JSExport>
    -(void)TestTowParameter:(NSString *)message1 SecondParameter:(NSString *)message2;
    @end
    

    4.然后遵循协议

    @interface PlanDetailViewController ()<JSDemoExport>
    

    5.以JSExport 协议关联control方法(位置同第2,写到初始化后边)

    // 打印异常
    context.exceptionHandler = ^(JSContext *context, JSValue *exceptionValue) {
        //  context.exception = exceptionValue;
    };    
    context[@"control"] = self;
    

    6.实现接收传值的方法(参数为JS端传过来的参数,即手机端需要处理的数据)

    -(void)TestTowParameter:(NSString *)message1 SecondParameter:(NSString *)message2{
    NSLog(@"参数一:%@,参数二:%@",message1,message2);
    }
    

    OC调用JS##

    1.第一种方法,使用webView自带的stringByEvaluatingJavaScriptFromString方法

    NSString *jsStr = [NSString stringWithFormat:@"document.body.style.zoom=%f",MaxSCale];
    [_webView stringByEvaluatingJavaScriptFromString:jsStr];//这里是一个网页放大比例的一句JS的代码
    

    2.第二种方法,使用JavaScriptCore库来进行JS调用

    JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
    NSString *textJS = @"showAlert('web弹窗')";
    [context evaluateScript:textJS];
    

    注意:stringByEvaluatingJavaScriptFromString是同步方法,在webView的JS方法损耗比较大的时候,可能会卡主UI。

    相关文章

      网友评论

          本文标题:OC与JS交互

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