移动应用中许多复杂的且经常改动的页面会使用H5进行代替native,这里就会使用到js和webview的交互

iOS里面,UIWebView提供了方法stringByEvaluatingJavaScriptFromString:使js和webview互通

这里我提供一种思路,仅供参考

1.加载js函数

var Test = {};
Test.platform = {
name: 'IOS'
};
// 返回App识别ID
Test.getAppId = function(){
return '[AppId]';
};
// 返回用户Id
Test.getUserId = function(){
return '[UserId]';
};
// 返回当前AppVersion
Test.getAppVersion = function(){
return '[AppVersion]';
};
Test.open = function(str){
setTimeout(function(){
document.location = 'Test://open/'+str;
},50);
};
window.Test = Test;

2.简单几个函数,加载前替换掉自己的value,

for (NSString *key in dict) {
NSString *placekey = [NSString stringWithFormat:@"[%@]", key];
NSString *value = [dict[key] stringValue];
if (! value || [value isEqual:[NSNull null]]) {
jsString = [jsString stringByReplacingOccurrencesOfString:placekey withString:@"null"];
}else{
jsString = [jsString stringByReplacingOccurrencesOfString:placekey withString:value];
}
}

3.加入webview的js里面:

   [webView stringByEvaluatingJavaScriptFromString:jsString];

当js调用native的操作时候,可以使用Test.open(firstViewController?paramter=123)
native的delegate将会调用:

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

这里的request.url将会是:

Test://open/firstViewController?paramter=123

进入我们自己解析方法,对此url进行不同的解析和跳转

NSString *requestString = [[request URL] absoluteString];
NSArray *components = [requestString componentsSeparatedByString:@"://"]; if (components[0] && [components count] > 1) {//如果协议抬头为Test或者为其他则走自定义流程
NSString *content = components[1];
NSArray *controller = [content componentsSeparatedByString:@"/"];
if (controller.count > 1 && [controller[0] isEqual:@"open"]) {//打开特定的controller
[self openController:controller[1]];
}
} return NO;

iOS web view 与 js 交互的更多相关文章

  1. iOS下原生与JS交互(总结)

    iOS开发免不了要与UIWebView打交道,然后就要涉及到JS与原生OC交互,今天总结一下JS与原生OC交互的两种方式. JS调用原生OC篇(我自己用的方式二,简单方便) 方式一 第一种方式是用JS ...

  2. iOS WKWebView OC 与 JS 交互学习

    我写WKWebView 想让 服务端相应 一个 方法但是不响应,根据 UIWebView 用 JSContext就能拿到响应的处理经验是不是服务端 也需要 对 WKwebView有兼容的一个写法??? ...

  3. iOS中UIWebView使用JS交互 - 机智的新手

    iOS中偶尔也会用到webview来显示一些内容,比如新闻,或者一段介绍.但是用的不多,现在来教大家怎么使用js跟webview进行交互. 这里就拿点击图片获取图片路径为例: 1.测试页面html & ...

  4. iOS中UIWebView使用JS交互

    iOS中偶尔也会用到webview来显示一些内容,比如新闻,或者一段介绍.但是用的不多,现在来教大家怎么使用js跟webview进行交互. 这里就拿点击图片获取图片路径为例: 1.测试页面html & ...

  5. ios WKWebView 与 JS 交互实战技巧

    一.WKWebView 由于Xcode8发布之后,编译器开始不支持iOS 7了,这样我们的app也改为最低支持iOS 8.0,既然需要与web交互,那自然也就选择使用了 iOS 8.0之后 才推出的新 ...

  6. iOS(UIWebView 和WKWebView)OC与JS交互 之二

    在iOS应用的开发过程中,我们经常会使用到WebView,当我们对WebView进行操作的时候,有时会需要进行源生的操作.那么我记下来就与大家分享一下OC与JS交互. 首先先说第一种方法,并没有牵扯O ...

  7. iOS webView与js交互在文本空格上输入文字

    项目要求:webview加载html网址,内容为填空题型文本,需要在横线上添加答案,并点击提交按钮后再将答案进行回显 正常加载的效果图片: 这个是用js交互后的效果图: 点击空格,输入想输入的答案,如 ...

  8. iOS JS 交互之利用系统JSContext实现 JS调用OC方法以及Objective-C调用JavaScript方法

    ios js 交互分为两块: 1.oc调用js 这一块实现起来比较简单, 我的项目中加载的是本地的html,js,css,需要注意的是当你向工程中拖入这些文件时,选择拷贝到工程中,(拖入的文件夹是蓝色 ...

  9. iOS与Html5和JS之间的交互---学习笔记五

    首先采用的框架是WebViewJavascriptBridge,采用这套框架可以方便的使iOS与JS交互 一. 流程图(主要介绍思路) 二.iOS端如何使用 首先导入#import "Web ...

随机推荐

  1. C#实现图片叠加,图片上嵌入文字,文字生成图片的方法

    /// <summary>     /// 图片叠加     /// </summary>     /// <param name="sender"& ...

  2. uboot 传递的参数 mtdparts

    启动uboot后,在重新烧写程序之前,查看传递给内核的参数时(命令为: printenv),看到如下内容: bootargs=console=ttyS0,115200 mtdparts=spi0.0: ...

  3. zabbix通过简单shell命令监控elasticsearch集群状态

    简单命令监控elasticsearch集群状态 原理: 使用curl命令模拟访问任意一个es节点可以反馈的集群状态,集群的状态需要为green curl -sXGET http://serverip: ...

  4. mybatis和spring整合的关键配置

    spring配置文件 applicationContext.xml: <beans xmlns="http://www.springframework.org/schema/beans ...

  5. centos命令行变成了-bash-4.1$的解决办法

    在使用root用户是先建立了用户yunva的家目录,然后添加yunva用户,切换到yunva用户后发现 命令行变成了-bash-4.1$ ①方法一(临时生效,不推荐) 1. bashrc 在当前目录下 ...

  6. 利用mysqltuner工具对mysql数据库进行优化

    mysqltuner工具使用,本工具建议定期运行,发现目前MYSQL数据库存在的问题及修改相关的参数 工具的下载及部署 解决环境依赖,因为工具是perl脚本开发的,需要perl脚本环境 # yun i ...

  7. JQ初学总结一

    Jquery是最火的JavaScript库,大部分web开发都会用到就jquery,而作为初学者看了一些jq的用法总结自己的学习以增强自己的认知. 普通的javascript的缺点是:每种控件的操作方 ...

  8. Oracle 11g安装步骤以及Oracle11g创建表空间和用户,并授权

    Oracle 11g安装步骤详解 一.Oracle 下载 注意Oracle分成两个文件,下载完后,将两个文件解压到同一目录下即可. 路径名称中,最好不要出现中文,也不要出现空格等不规则字符. 官方下地 ...

  9. 返回表达式列表中最小值least(exp1,exp2,exp3,……,expn)

    least(exp1,exp2,exp3,--,expn) [功能]返回表达式列表中值最小的一个.如果表达式类型不同,会隐含转换为第一个表达式类型. [参数]exp1--n,各类型表达式 [返回]ex ...

  10. Ant+Jmeter自动化接口测试的部署 及 部署过程中的坑

    一.环境准备: 1.Jdk1.6或以上:http://www.oracle.com/technetwork/java/javase/downloads/index.html    配置环境变量-系统变 ...