美文网首页
JS和原生的交互

JS和原生的交互

作者: 骑着毛驴走起来 | 来源:发表于2018-03-18 11:19 被阅读279次

原生与js交互有两种方法:代理、JsContent

一、UIWebviewDelegate 代理交互

代理交互原理较为简单,也比较强大,但是代码书代码量可能比较大。

    _webView.delegate=self;

    NSString *path = [[NSBundle mainBundle] pathForResource:@"First" ofType:@"html"];

    NSURLRequest*request = [[NSURLRequestalloc]initWithURL:[NSURLURLWithString:path]];

    [_webViewloadRequest:request];

#pragma mark - UIWebviewDelegate

- (void)webViewDidFinishLoad:(UIWebView*)webView {

// 原生调用js

[webView stringByEvaluatingJavaScriptFromString:@""];

}

- (void)webViewDidStartLoad:(UIWebView*)webView {

 }

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType(UIWebViewNavigationType)navigationType {

// js调用原生。原生通过过滤请求的字符串(可能为url,也可能是自定义协议),调用原生的方法。

NSString*string = request.URL.absoluteString;

NSLog(@"shouldStartLoadWithRequest:%@", string);

return YES;

}

二、JSContext,JSContext是js会话。

1、原生调用js

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

    NSString *textJS = @"showAlert('这里是JS中alert弹出的message')";

    [context evaluateScript: textJS];

  2、js调用原生

    //定义好JS要调用的方法, share就是调用的share方法名

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

    context[@"share"] = ^() {

        NSArray*args = [JSContext currentArguments];

        for(JSValue * jsVal  in args) {

             NSLog(@"%@",  jsVal . toString);

        }

       UIAlertView*alertView = [[UIAlertViewalloc]initWithTitle:@"方式二"message:@"这是OC原生的弹出窗"delegate:selfcancelButtonTitle:@"收到"otherButtonTitles:nil];

        [alertViewshow];

    };

相关文章

  • 原生JS交互(三)—— UIWebView之JavaScript

    系列原生JS交互(一)—— UIWebView拦截URL原生JS交互(二)—— WKWebView拦截URL 一、...

  • WKWebView中JS与原生方法交互

    JS与iOS原生方法交互的场景还是比较多的, 项目中用到原生加载h5界面, 然后js与原生交互. 原生端调用js端...

  • 关于WebView

    JS与Android原生交互 首先,webview应该先支持JS脚本 其次,写一个JS交互的接口,用来调用原生的方...

  • js和原生交互

    其中,callRefreshAccessToken 和 accessTokenError函数名是和原生协商定的(...

  • JS和原生交互

    现在H5和原生的交互在日常开发中经常用的,很多APP为了优化APP,更加便捷灵活的更新页面,有很多页面交给了H5来...

  • JS和原生的交互

    原生与js交互有两种方法:代理、JsContent 一、UIWebviewDelegate 代理交互 代理交互原理...

  • 原生与H5交互

    本文讲述使用协议进行H5和webView的交互,包含原生向JS传参和JS向原生传递参数 创建w...

  • iOS原生与JS交互

    iOS原生与JS交互的几种方式对比

  • IOS OC与JS最全交互

    现在原生端与JS交互是非常常见,项目中刚好有些详情页面需要与JS交互,同时评论在原生请求,JS端显示评论的内容。 ...

  • WebViewJavascriptBridge优化开发

    背景 WebViewJavascriptBridge作为JS和原生OC的交互,通常都是在WebView中用self...

网友评论

      本文标题:JS和原生的交互

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