美文网首页
OC与JS交互

OC与JS交互

作者: CJ阿杰 | 来源:发表于2018-03-14 15:55 被阅读12次

    WKWebView

    - OC调用JS:

    [webView evaluateJavaScript:@"我是JS"completionHandler:^(id_Nullable response,NSError* _Nullable error) { }];

    - JS调用OC:

    JS写法:window.webkit.messageHandlers.<对象名>.postMessage(<数据>)

    上方代码在JS端写会报错,导致页面后面业务不执行.可使用try-catch执行

    OC写法:

    UIWebView

    - OC调用JS:

    self.title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"];

    - JS调用OC:

    a. webView拦截url链接

    JS写法:window.location.href = "scheme://method?params={}"

    OC写法:实现以下webView的代理方法,当webView每次开始加载URL时会进入这个方法,我们便可以在这个方法实现JS调用OC

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

    总结:这种JS调用OC的方法的缺点十分明显,需要繁琐地解释字符串得到相应的方法名和传值,且调用的方法也不能传递返回值;但优点是:不需要等待页面加载完才触发,当相应的代码被运行就能调用OC的方法

    b. JavaScriptCore

    JavaScriptCore是苹果在iOS7时新推出用以实现JS和iOS代码交互的框架,十分简单高效。使用这种,需要导入JavaScriptCore.framework框架。

    JS写法:window.wealth.method('param1', 'param2');

    OC写法:必须在 - (void)webViewDidStartLoad:(UIWebView*)webView 和 - (void)webViewDidFinishLoad:(UIWebView*)webView 方法中调用以下方法。wealth中要实现JSExport协议。

    相关文章

      网友评论

          本文标题:OC与JS交互

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