iOS JS与OC交互 本文内容导航 1、`UIWebView` JS 与 OC 交互 1.1 OC 调用 JS 函数 1.1.1 OC 拼接 JS 字符串调用 JS 方法 1.1.2 使用 JSContext...上下文环境调用 JS 函数 1.2 JS 调用 OC 函数 1.2.1 OC 拦截 JS 超链接操作请求 1.2.2 向 JS 中注入 OC 类 1.2.3 使用 JSContext 上下文,JS函数...context[@"ViewController"] = self; } 相应的在JS 中,可以直接使用 OC 类和方法调用: function getUserInfo() { // 注入OC类以后,此处通过OC类名可直接调用...调用 JS 函数 OC 调用 JS 是通过 evaluateJavaScript: completionHandler: 方法实现的,JS 代码比较简单: <!
很久之前用的互相调用的方法,今天要分享下,故记录下 Objective-C,通常写作ObjC或OC和较少用的Objective C或Obj-C,是扩充C的面向对象编程语言。...数据通讯复杂 UIWebView与App之间进行数据通讯只能通过javascript或者UIWebViewDelegate来进行,客户端想传参数给UIWebView修改网页或者从网页中获取数据都比较复杂...调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
关于这种方式调用OC方法,唐巧早期有篇文章有过介绍: 关于UIWebView和PhoneGap的总结 方式二 在iOS 7之后,apple添加了一个新的库JavaScriptCore,用来做JS交互,...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互相调用...(六)--WKWebView + WebViewJavascriptBridge iOS下JS与OC互相调用(七)--Cordova 基础 iOS下JS与OC互相调用(八)--Cordova详解+实战
说到面向对象就不得不提类和对象这两个概念。类是一个抽象的概念,而对象是一个具体的概念。举一个生活中的例子。...下面是上课老师给出的类和对象的概念,从多个角度帮助我们更好地理解类和对象的概念: 类和对象的概念; 1.从生活逻辑理解: 类别、种类 类 对象 人 小明 对象具体到了某一个事物...在OC中要对类进行声明,再利用类创建新的对象,可以利用一个类创建多个对象。...函数在声明之后还要实现函数,这样函数才能被主函数中创建的对象调用。OC将类的声明和函数的实现分别放在了.h和.m这两个文件中,显得更加有条例性。...OC中的引入用#import。 OC中不管是对象的创建还是函数的调用都要用中括号括起来。
前面讲完拦截URL的方式实现JS与OC互相调用,终于到JavaScriptCore了。...So,我们只需要在自定义的协议类中,添加上属性和方法就可以了。 2、代码操作展示 因为该系列主要是JS与OC互调,所以主要介绍如何用JavaScriptCore实现JS与OC互调。...当然我们可以将JSContext 和JSValue当做block的参数传进去,这样就可以使用啦。 2.3 OC调用JS方法 OC调用JS方法就有多种方式了。...我们上面的JS调用OC方法,就是利用的这个实现的。 关于JSExport如何使用?...JSExport 主要是用于将OC中定义的Model类等引入到JavaScript中,便于在JS中使用这种对象和对象的属性、方法。
使用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:。
PhoneGap 是Nitobi软件公司2008年推出的一个框架,旨在弥补web 和iOS 之间的不足,使得web 和 iPhone SDK 之间的交互更容易。...后来又加入了Android SDK 和BlackBerry SDK,再然后又陆续加入了更多的平台。...安装Cordova ** Cordova 命令行需要运行在 Node.js 上,在 NPM 也可用。我们可以按照 platform specific guides 去安装别的依赖平台。...因此,在安装Cordova之前,要先安装Node.js 和 NPM(可以参考文章Mac 下安装Node.js)。...下面是我的命令和运行效果图: ? 当然,如果我们想要在iOS 上运行 App,我们也可以输入: cordova run ios 也可以到指定目录下打开iOS 工程文件 ?
1、OC是在C语言基础上进行扩展得到的一门面向对象的程序设计语言,它也提供了定义类、成员变量和方法的基本功能。...;-代表该方法是实例方法,需要通过实例对象来调用。...6、对象的产生和使用:当一个对象被创建成功之后,这个对象将保存在堆内存中,OC不允许直接访问堆内存中的对象,只能通过该对象的指针变量来访问该对象。...id类型:OC提供了一个id类型,这个id类型可以代表所有对象的类型,也就是说,任意类的对象都可以赋值给id类型。当通过id类型的变量来调用方法时,OC将会执行动态绑定。...所谓动态绑定,是指OC将会跟踪对象所属的类,它会在运行时判断该对象所属的类,并在运行时确定需要的动态调用的方法,而不是在编译时就确定要调用的方法。
WebViewJavascriptBridge是一个有点年代的JS与OC交互的库,使用该库的著名应用还挺多的,目前这个库有7000+star。...本文介绍的是在UIWebView中使用WebViewJavascriptBridge来达到JS与OC互相调用的目的。WKWebView使用的是WKWebViewJavascriptBridge。...第四步、完成HMTL必要的JS代码 由于WebViewJavascriptBridge也是拦截URL来实现的调用原生功能,所以有一些代码跟之前iOS下JS与OC互相调用(一)中的HTML JS代码很相似...传递给js ,js 中将传递过来的字符串转成json ,然后通过handlerName 获取对应的function执行。...示例工程地址:JS_OC_WebViewJavascriptBridge Have Fun!
上一篇文章介绍了UIWebView 如何通过WebViewJavascriptBridge 来实现JS 与OC 的互相调用,这一篇来介绍一下WKWebView 又是如何通过WebViewJavascriptBridge...来实现JS 与OC 的互相调用的。...WKWebView 下使用WebViewJavascriptBridge来实现JS 与OC 的互相调用,也是通过拦截URL来实现的。...下面开始介绍WKWebView 如何通过WebViewJavascriptBridge 来实现JS 与OC 的互相调用。...第六步,Native 调用 JS 功能。 Native 调用js 功能与 js 调用Native 的原理和流程一样。 1、现在js 中注册,Native 要调用的功能。
(一)Swift调用OC 假设:我们的项目是Swift的。项目中用到了OC写的一些类。那么怎么让Swift调用OC类呢?如下图: 新建项目:Language选择Swift语言。 ?...新建Swift项目.png 添加OC文件:给项目中新建OC文件(向项目中拖拽已有OC文件或者通过command + N新建OC文件),如下图(新建一个OC类): ?...Snip20160919_10.png 桥接文件是Swift调用OC所必须的,Swift中用到哪个OC类,就需要在桥接文件中import该OC类的头文件,如下图: ?...2.Swift中调用的OC类,需要使用Swift语法。...OC中调用Swift类: ?
我去年也写过一个相互调用的总结:iOS下JS与原生OC互相调用(总结)。 写的比较粗糙,因此准备新开一个目录专题来记录JS 与原生交互的处理方式。...只是记录JS与OC交互的多种方式,大家可以根据实际情况和场景选择适合自己的方式。 ---- 今天就详细的介绍一下使用UIWebView拦截URL 的方式来实现JS与OC 的交互。...答:因为有的JS调用是需要OC 返回结果到JS的。...所有的参数都在URL的query中,先通过&将字符串拆分,在通过=把参数拆分成key 和实际的值。...OC调用JS方法 关于将OC 执行结果返回给JS 需要注意的是: 如果回调执行的JS 方法带参数,而参数不是字符串时,不要加单引号,否则可能导致调用JS 方法失败。
扯两句,可以跳过 由于项目中Cordova相关功能一直是同事在负责,所以也没有仔细的去探究Cordova到底是怎么使用的,又是如何实现JS 与 OC 的交互。...",title,content,url]; [self.commandDelegate evalJs:jsStr]; 第二种是,使用Cordova 封装好的对象CDVPluginResult和API...(),获取commandQueue里的json 字符串; executePending中将json 字符串转换为CDVInvokedUrlCommand对象,以及利用runtime,将js 里的服务和...方法,转换对象,然后调用objc_msgSend 直接调用执行,这样就进入了插件的对应的方法中了。...示例工程的github地址:JS_OC_Cordova Have Fun!
除了代理方法和WKWebView的使用不太一样,关于WKWebView更详尽的讲解和用法,还是自行搜索学习,本文重点还是讲解如何实现JS 与OC 互相调用。...2.WKWebView的代理有两个navigationDelegate和UIDelegate。我们要拦截URL,就要通过navigationDelegate的一个代理方法来实现。...2.拦截URL 使用WKNavigationDelegate中的代理方法,拦截自定义的URL来实现JS调用OC方法。...调用 JS 方法 JS 调用OC 方法后,有的操作可能需要将结果返回给JS。...这时候就是OC 调用JS 方法的场景。 WKWebView 提供了一个新的方法evaluateJavaScript:completionHandler:,实现OC 调用JS 等场景。
import java.lang.reflect.Method; class MethodInvokeTest { public static ...
<meta name="viewport" content="width=device-width, initial-scale=1.0">
于是: 我查了很多资料,逛了很多论坛,最终在Github上找到了一个名为“NativeShure”的JS插件,据说对浏览器的兼容性不错,于是便开始折腾!...废话不多说,直接上插件的官方文档: 移动端几乎所有浏览器都支持分享到QQ和QQ空间 QQ浏览器 UC浏览器 微信自带浏览器 QQ自带浏览器 QQ空间APP 百度浏览器 ios 搜狗浏览器 支持分享到web...安卓的QQ自带浏览器无法直接分享 虽然几乎所有的浏览器都支持分享到QQ和QQ空间,但是webview中基本都会不支持。...我也很难判断当前浏览器是否支持,浏览器是否唤起QQ APP我也很难判断,所有除了上述支持的浏览器,APP外其他情况调用分享到QQ我也会抛出异常。...浏览器安卓端不能设置icon 百度浏览器,百度APP不能直接分享 QQ空间APP,微信自带浏览器只能设置文案,分享需要用户手动点击右上角 使用方法: 1.设置一个按钮并绑定点击事件 2.引入插件JS
源码不多,就一个头文件WebViewJavascriptBridge.h和实现文件WebViewJavascriptBridge.m, 和一个js文件,实现在js那边可以调用oc方法,也可以在oc里面调用...先上图,实现简单的oc和js互相调用的demo, 另外附加一个模拟项目中用到的oc和js互相调用场景: ? 一、然后说说js调用oc方法的原理,它们是如何实现的?库文件三个 ?...我们跟踪下oc控制器加载UIWebView的过程和js调用oc方法过程 1、程序启动,在自定义控制器里,创建一个WebViewJavascriptBridge对象时,会加载WebViewJavascriptBridge.js.txt...文件,里面是初始js代码 在这个js里面,创建了一个WebViewJavascriptBridge脚本对象,另外创建一个隐藏的iframe标签:每次js调用oc方法,都是修改iframe标签的...至此,js调用oc成功 总结js调用oc过程: --> 触发js事件 --> 把要传入参数和自定义注册标识“js_Call_Objc_Func”存入js数组sendMessageQueue
调用JS) 假设需求:APP隐藏原生导航栏,相当于网页全屏了,当在APP中点击网页端的左上角返回键时,APP退出UIWebView并返回上级VC页面。...导入头文件 #import @protocol JSObjcDelegate //iosDelegate对象调用的...nonatomic, strong) JSContext *jsContext; @property (weak, nonatomic) IBOutlet UIWebView *webView; @end 设置JS-OC...(恭候JS调用) - (void)getCall{ NSLog(@"call"); // 之后在回调JavaScript的方法Callback把内容传出去 dispatch_async...关键部分:调用OC方法 $("#backId").click(function(){ var flag = getTheFlagString
JS对象,是一个名值对的无序集合。 jquery对象,是jquery特有的对象,只有调用jquery框架才存在。其实jquery对象,也是一种js对象。...jquery对象和js对象可以相互转换,例如 $("#div").get(),即可以把一个jquery对象转换为js对象。...最主要的区别,js对象上的方法,不能直接用在jquery对象上,如果一定要给jquery对象使用js对象的方法,必须把jquery对象转换为js对象。...jquery对象,则可以随意使用jquery定义的方法。
领取专属 10元无门槛券
手把手带您无忧上云