iOS与JS交互

① iOS -> JS

原理:通过WebView的方法直接调用JS代码

[WebView stringByEvaluatingJavaScriptFromString:@"A"];

// 这里的 A 就是WebView中的html所对应的JS代码

eg.

1)这里一个html所包含的js文件内的一个public方法

2)这是一个.m(iOS)文件内的一个WebView的调用1)中js方法的写法

3)那么在js的对应方法中,就会得到来自iOS的参数

② JS -> iOS

原理:iOS端的WebView的协议函数回调可以获取到其内部html元素的变化以及相应值,JS端只需变化内部元素即可

步骤一:JS端的处理

步骤二:JS端添加子元素后iOS端的回调

WebView   -   UIWebViewDelegate

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

  //获取JS端元素变化后的请求字符串(得到BC?D=d)

  NSString *reqString = [[[request URL] absoluteString] stringByReplacingPercentEscapesUsingEncoding: NSUTF8StringEncoding];

  // B 可以作为判断Flag

  // C 是调用的iOS的方法名称

  // ? 为分隔符

  // D 为参数名称

  // = 就是等于号,没啥意思

  // d 为具体参数(请以json格式传输,因为iOS的SEL的参数限制)

  // 得到了方法名以及参数之后得到SEL对象

  SEL sel = NSSelectorFromString([methodName stringByAppendingString:@":"]);

  // 也可以得到参数string to dictionary

  NSData *jsonData = [C dataUsingEncoding:NSUTF8StringEncoding];

    NSError *err;

    NSDictionary *argsInfo = [NSJSONSerialization JSONObjectWithData:jsonData

                                                        options:NSJSONReadingMutableContainers

                                                          error:&err];

  // 方法有了,参数也有了,调用,参数是以dictionary的形式给出的

  

  if ([self respondsToSelector:sel]) {

    // 调用方法C,参数为一个字典(iOS中的方法C的参数也应当为dictionary)

    [self performSelector:sel withObject:argsInfo]; 

   }

}

时间: 2024-11-25 12:27:18

iOS与JS交互的相关文章

IOS Webview JS交互之事件拦截获取

最近项目中用到了webvVew,webView加载的网页中有两个按钮,要在app里面响应这两个按钮的点击事件,并接受JS传过来的参数. ios7 的时候,出来了一个新的类库叫JavaScriptCore.framework - (void)setupJsContent { //获取当前JS环境 _content = [_webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; // 打印异

iOS与JS交互实战篇(ObjC版)

前言 ObjectiveC与Js交互是常见的需求,可对于新手或者所谓的高手而言,其实并不是那么简单明了.这里只介绍iOS7.0后出来的JavaScriptCore framework. 关于JavaScriptCore 本教程中所涉及到的几种类型: JSContext, JSContext是代表JS的执行环境,通过-evaluateScript:方法就可以执行一JS代码 JSValue, JSValue封装了JS与ObjC中的对应的类型,以及调用JS的API等 JSExport, JSExpor

ios与js交互获取webview元素和赋值

使用webview的stringByEvaluatingJavaScriptFromString的方法交互,直接提供实例. 下载:http://download.csdn.net/detail/heyuan110/4420050 附上document.location.body 属性方法 JS 对象 document:属性 document.title //设置文档标题等价于HTML的<title>标签 document.bgColor //设置页面背景色 document.fgColor /

iOS 与 js交互的其一方法 WebViewJavascriptBridge的使用

#import <WebViewJavascriptBridge.h> /// @interface ZWBridgeViewController ()<WKNavigationDelegate, WKUIDelegate, UIGestureRecognizerDelegate> @property (nonatomic, strong) ZWCommonNavBar *navBar; @property (nonatomic, strong) WKWebView *webVie

IOS与js的简单交互swift3版

在开发过程中,我们可能遇到ios代码与js交互的情况,本人第一次使用遇到了很多坑,这里纪录一下,方便自己,也方便需要的人. p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #e7e8ec } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #e7e8ec; min-height: 14.0px } span.s1 { colo

iOS JS 交互之利用系统JSContext实现 JS调用oc方法

ios js 交互分为两块: 1.oc调用js 这一块实现起来比较简单, 我的项目中加载的是本地的html,js,css,需要注意的是当你向工程中拖入这些文件时,选择如下操作,(拖入的文件夹是蓝色的,相对路径),不然css,js 的路径会存在问题 加载本地html: oc调用js:一句代码搞定 2.js 调用oc js调用oc又分为两种: 1.js端是直接调用方法 这里就要说到ios7才推出的一个新的api    JavaScriptCore,首先我们引入这个类,并初始化一个JSContext对

iOS下JS和原生交互,函数互调

现在越来越多的APP都是H5和原生混合开发,这样确实方便快捷,但是H5的部分总避免不了很多与原生的交互,原生调JS函数还比较简单,原生的API函数stringByEvaluatingJavaScriptFromString就可以完成需求,但是JS调原生的函数,系统没有提供API,所以很多人公司都采用标记位的形式完成,我们公司的也不例外,项目开发了很久,原生和JS交互一直是我负责,我们项目这块也要大量的交互操作,随便版本迭代,问题也越来越多,然后就想了很多办法去解决这个问题. 一,我原本的方案,拦

iOS web与JS交互

webview 与 JS交互核心代码为: [webView stringByEvaluatingJavaScriptFromString:@"xxxxxxxxxx"];

iOS开发——网络开发OC篇&amp;OC与JS交互简单案例

OC与JS交互简单案例 网页开发中三个重要的知识,这里就不详细介绍了! Html:页面代码 Css:样式 javascript:响应 先来看一段html的简单代码,里面涉及了上面的三个部分(很简单) 1 <html> 2 <!--描述网页信息--> 3 <head> 4 <meta charset="UTF-8"/> 5 <title>hello world</title> 6 <script> 7 f