iOS JS与OC交互 本文内容导航 1、`UIWebView` JS 与 OC 交互 1.1 OC 调用 JS 函数 1.1.1 OC 拼接 JS 字符串调用 JS 方法 1.1.2 使用 JSContext...script> function showAlert_hasReturnValue(str){ alert('OC 调用JS ' + str);...return '返回值给OC'; } function showAlert_noReturnValue(str){ alert('OC 调用...可以在此处处理后,传递给OC // 对注入的属性,做业务处理后返回给 OC arr.splice(0, 1)...responseCallback) { alert('JS方法被调用:' + data); responseCallback('OC调用的
很久之前用的互相调用的方法,今天要分享下,故记录下 Objective-C,通常写作ObjC或OC和较少用的Objective C或Obj-C,是扩充C的面向对象编程语言。...调oc 网页中的点击方法可以调起原生页面 /** 拦截URL js调用oc @param webView @param request @param navigationType @return...onclick="did();">google function did() { window.location.href = 'jsToOC:success'; } 3.oc...调js 原生调用js方法,也可把参数传递给js /** 返回附件参数的代理 @param array */ - (void)didBackButtonWithArray:(NSMutableArray...]; } js中写法 function cacheAttachMentInfo(ssss, yyy) { alert(ssss); }
"]; 再然后定义好JS需要调用的方法,例如JS要调用share方法: 则可以在UIWebView加载url完成后,在其代理方法中添加要调用的share方法: - (void)webViewDidFinishLoad...OC调用JS篇 方式一 NSString *jsStr = [NSString stringWithFormat:@"showAlert('%@')",@"这里是JS中alert弹出的message"]...JS_OC_summary 如果你看的还不尽兴,后面还有几篇JS相互调用的文章。...iOS下JS与OC互相调用(一)--UIWebView 拦截URL iOS下JS与OC互相调用(二)--WKWebView 拦截URL iOS下JS与OC互相调用(三)--MessageHandler...iOS下JS与OC互相调用(四)--JavaScriptCore iOS下JS与OC互相调用(五)--UIWebView + WebViewJavascriptBridge iOS下JS与OC互相调用
前面讲完拦截URL的方式实现JS与OC互相调用,终于到JavaScriptCore了。...要调用的原生OC方法,可以在viewDidLoad webView被创建后就添加好,但最好是在网址加载成功后再添加,以避免无法预料的乱入Bug。...2.3 OC调用JS方法 OC调用JS方法就有多种方式了。首先介绍使用JavaScriptCore框架的方式。..."]; [context[@"payResult"] callWithArguments:@[@"支付弹窗"]]; 当然,如果是在执行原生OC方法之后,想要在OC执行完操作后,将结果回调给JS...我们上面的JS调用OC方法,就是利用的这个实现的。 关于JSExport如何使用?
使用WKWebView的时候,如果想要实现JS调用OC方法,除了拦截URL之外,还有一种简单的方式。那就是利用WKWebView的新特性MessageHandler来实现JS调用原生方法。...WKScriptMessageHandler是因为我们要处理JS调用OC方法的请求。...解析JS 调用OC 实现分享的参数: - (void)shareWithParams:(NSDictionary *)tempDic { if (!...4.处理HTML中JS调用。 HMTL的源码跟之前的HTML内容差不多,只有JS的调用部分改变了。...调用JS 这里使用WKWebView 实现OC 调用JS方法跟上一篇是一样的,还是利用 - evaluateJavaScript:completionHandler:。
安装Cordova ** Cordova 命令行需要运行在 Node.js 上,在 NPM 也可用。我们可以按照 platform specific guides 去安装别的依赖平台。...因此,在安装Cordova之前,要先安装Node.js 和 NPM(可以参考文章Mac 下安装Node.js)。...以管理员身份安装Cordova的命令: sudo npm install -g cordova 安装过程可能比较慢,安装成功后,可以看到类似如下的目录结构,并且没有错误信息: ?
本文介绍的是在UIWebView中使用WebViewJavascriptBridge来达到JS与OC互相调用的目的。WKWebView使用的是WKWebViewJavascriptBridge。...第四步、完成HMTL必要的JS代码 由于WebViewJavascriptBridge也是拦截URL来实现的调用原生功能,所以有一些代码跟之前iOS下JS与OC互相调用(一)中的HTML JS代码很相似...', function(data, responseCallback) { alert('JS方法被调用:'+data); responseCallback('js执行过了...('testJSFunction', function(data, responseCallback) { alert('JS方法被调用:'+data); responseCallback...JS后的回调:%@",responseData); }]; 而callHandler 方法又是如何实现调用js 方法的呢?
来实现JS 与OC 的互相调用的。...WKWebView 下使用WebViewJavascriptBridge来实现JS 与OC 的互相调用,也是通过拦截URL来实现的。...下面开始介绍WKWebView 如何通过WebViewJavascriptBridge 来实现JS 与OC 的互相调用。...bridge.registerHandler('testJSFunction', function(data, responseCallback) { alert('JS方法被调用:'+...function里的data ,就是Native 调用该功能时传过来的参数,responseCallback是执行完js 代码后,通过responseCallback将必要的信息返回到Native中。
我去年也写过一个相互调用的总结:iOS下JS与原生OC互相调用(总结)。 写的比较粗糙,因此准备新开一个目录专题来记录JS 与原生交互的处理方式。...因为我在OC 中拦截URL 时,根据scheme (即haleyAction)来区分是调用原生的方法还是正常的网页跳转。然后根据host(即//后的部分getLocation)来区分执行什么操作。...答:因为有的JS调用是需要OC 返回结果到JS的。...导致alert 卡死界面。如果回调的JS 是一个耗时的操作,那么建议将耗时的操作也放入setTimeout的function 中。...OC调用JS方法 关于将OC 执行结果返回给JS 需要注意的是: 如果回调执行的JS 方法带参数,而参数不是字符串时,不要加单引号,否则可能导致调用JS 方法失败。
扯两句,可以跳过 由于项目中Cordova相关功能一直是同事在负责,所以也没有仔细的去探究Cordova到底是怎么使用的,又是如何实现JS 与 OC 的交互。...1.新建工程,添加Cordova 关键类 我这里用Xcode 8 新建了一个工程,叫 JS_OC_Cordova,然后将Cordova关键类添加进工程。 有哪些关键类呢?...这里有两种方式:第一种是直接执行JS,调用UIWebView 的执行js 方法。...调用Native 功能 终于到重点了,JS想要调用原生代码,如何操作呢?...示例工程的github地址:JS_OC_Cordova Have Fun!
除了代理方法和WKWebView的使用不太一样,关于WKWebView更详尽的讲解和用法,还是自行搜索学习,本文重点还是讲解如何实现JS 与OC 互相调用。...2.拦截URL 使用WKNavigationDelegate中的代理方法,拦截自定义的URL来实现JS调用OC方法。...调用 JS 方法 JS 调用OC 方法后,有的操作可能需要将结果返回给JS。...这时候就是OC 调用JS 方法的场景。 WKWebView 提供了一个新的方法evaluateJavaScript:completionHandler:,实现OC 调用JS 等场景。...例如,我在JS中要显示alert 弹窗,就必须实现如下代理方法,否则alert 并不会弹出。
document.getElementById('dd'); dd.appendChild(script); } 通过test函数调用write.js文件 内容主要是document.write('**...****************'),页面并无内容输出 如果write.js里面是alert内容 则会弹窗!...并且,任何后面调用的document.write()方法只会把内容追加到页面后,而不会清除现有内容来写入新值。...现在是页面已经加载进来了,所以我认为点击后,加载进来的js,执行document.write,那么文本的输出浏览器不处理,而不是像加载时输出在当前元素里面。...+ '******************'; alert('ccc'); } test2();
小闫语录:你可以菜,但是就这么菜下去是不是有点过分了 ❞ 每天不是在写 bug,就是在解 bug 的路上~更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』 1.无参数函数作为参数传入调用...} fuc2(fuc1); // 1 2.有参数函数作为参数传入调用 一般的函数都有参数,那么这种情况如何传参呢?...fuc2(fuc1, "欢迎关注微信公众号:全栈技术精选"); 3.有参数函数作为事件方法 现在要将传入的函数作为点击事件的处理程序,你一定想得是这样: function fuc1(param) { alert...❝因为在你写 fuc1("我是小闫同学啊") 时,默认就调用了此函数,都不需要点击。 ❞ 如何才能达到在点击时才弹出窗口呢?...你需要这样做: //请关注:全栈技术精选 function fuc1(param) { alert(param); } var link = document.getElementById("link1
作者:朱灵子 React Native用IOS自带的JavaScriptCore作为JS的解析引擎,普通的JS-OC通信就是React Native在OC定义一个模块方法,JS可以直接调用这个模块方法并还可以无缝衔接回调...之间的通信我们首先需要了解模块配置表,接下来对模块配置表进行简单的介绍:模块配置表js如果要调用oc提供的接口方法,OC首先需要向JS传递它所有的模块信息。...与js之间的调用流程OC端和JS端分别各有一个bridge,两个bridge都保存了同样一份模块配置表,JS调用OC模块方法时,通过bridge里的配置表把模块方法转为模块ID和方法ID传给OC,OC通过...,包括callback回调,下面展示的是细化版本的调用流程图:[FqlspzJuEueR6tcNIUU5yCZ7nGtW]详细说明下这些步骤: 1.JS端调用某个OC模块暴露出来的方法 2.把上一步的调用分解为...6.RCTModuleMethod对JS传过来的每一个参数进行处理。 7.OC模块方法调用完,执行block回调。 8.调用到第6步说明的RCTModuleMethod生成的block。
React Native用IOS自带的JavaScriptCore作为JS的解析引擎,普通的JS-OC通信就是React Native在OC定义一个模块方法,JS可以直接调用这个模块方法并还可以无缝衔接回调...之间的通信我们首先需要了解模块配置表,接下来对模块配置表进行简单的介绍: 模块配置表 js如果要调用oc提供的接口方法,OC首先需要向JS传递它所有的模块信息。...与js之间的调用流程 OC端和JS端分别各有一个bridge,两个bridge都保存了同样一份模块配置表,JS调用OC模块方法时,通过bridge里的配置表把模块方法转为模块ID和方法ID传给OC,OC...接下来看看JS调用OC模块方法的详细流程,包括callback回调,下面展示的是细化版本的调用流程图: ?...6.RCTModuleMethod对JS传过来的每一个参数进行处理。 7.OC模块方法调用完,执行block回调。 8.调用到第6步说明的RCTModuleMethod生成的block。
Native在OC定义一个模块方法,JS可以直接调用这个模块方法并还可以无缝衔接回调。...之间的通信我们首先需要了解模块配置表,接下来对模块配置表进行简单的介绍: 模块配置表 js如果要调用oc提供的接口方法,OC首先需要向JS传递它所有的模块信息。...与js之间的调用流程 OC端和JS端分别各有一个bridge,两个bridge都保存了同样一份模块配置表,JS调用OC模块方法时,通过bridge里的配置表把模块方法转为模块ID和方法ID传给OC,OC...接下来看看JS调用OC模块方法的详细流程,包括callback回调,下面展示的是细化版本的调用流程图: ?...6.RCTModuleMethod对JS传过来的每一个参数进行处理。 7.OC模块方法调用完,执行block回调。 8.调用到第6步说明的RCTModuleMethod生成的block。
它的基本原理是: 把 OC 的方法注册到桥梁中,让 JS 去调用。 把 JS 的方法注册在桥梁中,让 OC 去调用。...传递过来的数据. // responseCallback 是 JS 调用完毕之后传递给 OC 的数据 alert("JS 被 OC 调用了.");...JS 调用在被 OC 调用完毕之后,向 OC 端传递的数据。 基本就是: OC 端注册 OC 的方法,OC 端调用 JS 的函数。 JS 端注册 JS 的函数,JS 端调用 OC 的方法。...WebViewJavascriptBridge.callHandler('colorClick',function(dataFromOC) { alert("JS 调用了 OC...alert("JS 调用了 OC 的扫描方法!")
/u010105969/article/details/53541088 本篇博客则是讲了OC传值给JS,代码似乎更简单。...OC传值给JS的代码: // 页面加载完成之后调用 - (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *...JS接收OC传值的代码: function payResult(str){ if(str == ‘ture’){ alert(‘登录’); } } OC代码中的payResult()方法是...注意:JS能接收到OC传递的数据,但却不能进行输出,需要进行判断,看接收到的数据是不是某个数据。...再次提醒:这种OC给JS传参数的方式实际就是OC调用JS方法,传的值是JS方法的一个参数。 好了,博客很短,代码很简单,希望帮到那些在找OC传值给JS方法的童鞋们。
https://blog.csdn.net/u010105969/article/details/53541088 之前已经写过一个篇OC与JS交互的博客了(博客地址:http://blog.csdn.net...('Objective-C call js to show alert'); } function callAbc1() { alert('liangsen...JS代码中利用 alert('liangsen...'); 来给我们传递数据,我们用runJavaScriptAlertPanelWithMessage这个方法来接收JS传递给我们的数据。...alert in js'}); AppModel是我们注入的对象,“()”中的内容是我们传递给客户端的数据。...对象..."); } } OC调用JS代码: [self.webView evaluateJavaScript:@"jsFunction()" completionHandler:^(id
title> nextPage(下一页) alert...代码 3.运行 oc代码: // // ViewController.m // OC与JS交互之WKWebView // // Created by user on 16/8/18. //...WKUserContentController *userCC = config.userContentController; //JS调用OC 添加处理脚本 [userCC addScriptMessageHandler...JS代码才会执行,因为这个时候html页面已经注入到webView中并且可以响应到对应方法 //oc调用h5,通过按钮的点击事件进行响应 - (IBAction)btnClick:(UIButton *...调用JS的方法列表 function alertMobile() { //这里已经调用过来了 但是搞不明白为什么alert方法没有响应
领取专属 10元无门槛券
手把手带您无忧上云