您的位置:

包含处理ios系统里js的词条

包含处理ios系统里js的词条

更新:

本文目录一览:

如何在IOS平台上使用js直接调用OC方法

本例子是为了让大家能快速开发出OC调用JS功能的一个简单的例子。

1、准备一个本地化的html网页,如jsIOS.html

script type="text/javaScript"

function postStr(){

return document.getElementById("text1").value;

//return "javaScript返回值啦";

}

/script

2、将此html文件放到项目代码目录里面,如图:

3、拖一个UIWebView控件和UIButton控件到xxxViewController对应的.xib或.storyboard视图的UIView上;

在xxxViewController的.h文件中分别声明UIWebView类型变量和UIButton类型的变量,以及一个按钮点击事件(并且跟视图里面的控件连线),

并且添加一个UIWebViewDelegate类型的委托。喎�"" target="_blank" class="keylink"vcD4KPHA+eHh4Vmlld0NvbnRyb2xsZXIuaM7EvP7E2sjdyOfPwqO6PC9wPgo8cD48L3A+CjxwIGNsYXNzPQ=="p1"

#import

@interface ViewController : UIViewController

@property(nonatomic,retain) IBOutlet UIWebView *webview;

@property(nonatomic,retain) IBOutlet UIButton *button;

-(IBAction)IOS_JS:(id)sender;

@end

4、在xxxViewController.m文件中实现通过点击事件,调用javaScript的方法并取得返回值。

代码如下:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

@synthesize webview;

- (void)viewDidLoad

{

[super viewDidLoad];

//设置webView

webview.backgroundColor = [UIColor clearColor];

//webview.scalesPageToFit =YES;

webview.delegate =self;

//找到jsIOS.html文件的路径

NSString *basePath = [[NSBundle mainBundle]bundlePath];

NSString *helpHtmlPath = [basePath stringByAppendingPathComponent:@"jsIOS.html"];

NSURL *url = [NSURL fileURLWithPath:helpHtmlPath];

//加载本地html文件

[webview loadRequest:[NSURLRequest requestWithURL:url]];

}

/*

* 点击事件

* 调用javaScript的方法postStr()并取得返回值

* 输出返回值到控制台

*/

-(IBAction)IOS_JS:(id)sender

{

NSString *str = [self.webview stringByEvaluatingJavaScriptFromString:@"postStr();"];

NSLog(@"JS返回值:%@",str);

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

}

@end

iOS 调用本地.js文件的方法

接到一个需求,需要我调用本地.js文件里的方法,我一开始就想当然的直接用webView去调用:

结果是一直在打印error,后来发现并不能去调.js文件里的东西,但是可以用html文件包装一下.js文件

这样就能访问到generatorBrainKey()方法了,但是在真机测试的时候又出现问题了,因为我们写的地址是固定的,无法找到指定的.js文件,这个问题的当时纠结了半天,结果发现解决办法就是把前面的地址去掉只保留文件名就行.

这样就没问题了.

iOS - OC 与 JS 交互六种方式总结

在 APP 中,免不了与 H5页面打交道,所以掌握 与 JS 交互就显的至关重要,本文总结了常见的与 JS 交互方式。

注意事项

在 OC 原生中

在 html 文件中

早期的JS与原生交互的开源库很多都是用得这种方式来实现的,例如:PhoneGap、 WebViewJavascriptBridge 。

效果图

使用WKNavigationDelegate中的代理方法,拦截自定义的 URL 来实现 JS 调用 OC 方法。

注意点

关于如何区分执行不同的OC 方法,也与UIWebView的处理方式一样,通过URL 的host 来区分执行不同的方法:

JS 调用OC 方法后,有的操作可能需要将结果返回给JS。这时候就是OC 调用JS 方法的场景。

WKWebView 提供了一个新的方法 evaluateJavaScript:completionHandler: ,实现OC 调用JS 等场景。

注意点

运行结果

在iOS 7之后,apple添加了一个新的库JavaScriptCore,用来做JS交互,因此JS与原生OC交互也变得简单了许多。

首先导入JavaScriptCore库, 然后在OC中获取JS的上下文。

再然后定义好JS需要调用的方法,例如JS要调用share方法:

则可以在UIWebView加载url完成后,在其代理方法中添加要调用的share方法:

OC 调用 JS 方法有多种,首先介绍使用JavaScriptCore框架的方式。

使用JSContext 的方法 -evaluateScript ,可以实现 OC 调用 JS 方法

效果图

使用WKWebView的时候,如果想要实现JS调用OC方法,除了拦截URL之外,还有一种简单的方式。那就是利用WKWebView的新特性MessageHandler来实现JS调用原生方法。

创建 WKWebViewConfiguration 对象,配置各个API对应的MessageHandler。

然后在界面即将显示的时候添加MessageHandler

需要注意的是addScriptMessageHandler很容易引起循环引用,导致控制器无法被释放,所以需要移除MessageHandler

这里实现了两个协议 WKUIDelegate,WKScriptMessageHandler , WKUIDelegate 是因为我在JS中弹出了alert 。 WKScriptMessageHandler 是因为我们要处理JS调用OC方法的请求。

WKScriptMessage 有两个关键属性 name 和 body 。

因为我们给每一个OC 方法取了一个name,那么我们就可以根据name 来区分执行不同的方法。body 中存着JS 要给OC 传的参数。

关于参数body 的解析,我就举一个body中放字典的例子,其他的稍后可以看demo。

解析JS 调用OC 实现分享的参数:

message.boby 就是JS 里传过来的参数。我们不同的方法先做一下容错性判断。然后正常取值就可以了。

下面只列举一个shareClick()方法,其他看Demo

这里使用WKWebView 实现OC 调用JS方法与之前说的文章一样,通过

- evaluateJavaScript:completionHandler:

效果图如下图所示

详情看下面文章链接

iOS下 JS 与 OC 互相调用(五) - UIWebView+WebViewJavascriptBridge

详情看下面文章链接

iOS下 JS 与 OC 互相调用(六) - WKWebView+WKWebViewJavascriptBridge

iOS下 JS 与OC 互相调用(一) - UIWebView 拦截 URL

iOS下 JS 与OC 互相调用(二) - JavaScriptCore

iOS 下 JS 与 OC 互相调用(三) - WKWebView 拦截 URL

iOS下JS与OC互相调用(四)-MessageHandler

iOS下 JS 与 OC 互相调用(五) - UIWebView+WebViewJavascriptBridge

iOS下 JS 与 OC 互相调用(六) - WKWebView+WKWebViewJavascriptBridge

包含处理ios系统里js的词条

本文目录一览: 1、如何在IOS平台上使用js直接调用OC方法 2、iOS 调用本地.js文件的方法 3、iOS - OC 与 JS 交互六种方式总结 如何在IOS平台上使用js直接调用OC方法 本例

2023-12-08
包含js1996线路苹果ios版的词条

本文目录一览: 1、js怎么判断ios系统的版本号 2、JS怎么判断ios系统的版本号 3、苹果CMS怎样实现播放界面多条线路切换 4、苹果怎么屏蔽js96110 js怎么判断ios系统的版本号 判断

2023-12-08
包含java里ajax和js的词条

2022-11-10
包含cdnbootstrap.min.js的词条

本文目录一览: 1、Bootstrap免费 CDN 加速服务/Bootstrap文件怎么引入 2、bootstrap怎么快速使用 3、bootstrap 导航条下拉菜单点击无反应? 4、怎么在页面里引

2023-12-08
包含java基础笔记day1的词条

2022-11-20
包含jsp的click的词条

本文目录一览: 1、jsp中onclick需要引入文件吗 2、Java Web中jsp页面的按钮点击事件求解~ 3、jsp中onclick可以传递参数吗 4、jsp中onclick的问题 5、JSP页

2023-12-08
关于ios系统js后缀的信息

本文目录一览: 1、手机怎么修改后缀是.js的文件 2、苹果 6s上的javascript是什么意思? 3、.js后缀的是什么文件 4、.js是什么文件格式 5、javascript的后缀名是什么?

2023-12-08
包含js网页正文抽取的词条

本文目录一览: 1、js获取网页当中所有标签里面的文本 2、javascript 怎么获取指定url网页中的内容 3、JS如何从另一个网页获取数据内容进行处理? 4、怎么用JS获取网页中指定标签内的选

2023-12-08
ios连接websocketjs(ios连接wifi不弹出登

本文目录一览: 1、IOS系统苹果手机 WebSocket无法连接的问题 2、Js WebSocket 3、iOS使用Charles代理抓包WebSocket连接 4、怎样在iOS中使用websock

2023-12-08
印象笔记记录java学习(Java成长笔记)

2022-11-12
包含python使用笔记24的词条

2022-11-21
包含jsp写的cwc大型商城系统的词条

本文目录一览: 1、请教:用jsp做商城页面,点击商品图片进入该商品的详细页面,应该怎么实现,大致讲下思路就好 2、jsp网上购物系统开发背景 3、我买了个系统,为网上购物系统,用java写的,前台是

2023-12-08
包含js从http里读数据库的词条

本文目录一览: 1、JAVASCRIPT如何操作数据库? 2、怎么在js里面获取数据库的数据 3、在JS脚本中怎样读取数据库中的数据? 4、JS 文件如何获取数据库中的数据 JAVASCRIPT如何操

2023-12-08
包含cocos2dxjsrequire的词条

本文目录一览: 1、vs2012开发cocos2dx调用lua报错 2、cocos2dx 可以使用js开发吗 3、cocos2dx html5 创建的js怎么引用 4、cocos2dx-js可以热更新

2023-12-08
包含linux内核js的词条

本文目录一览: 1、如何在linux内核中读写文件 2、linux服务器上的JS文件无法访问该怎么解决呢 3、linux服务器找不到js的函数 4、linux系统的JS判断如何写 5、linux操作系

2023-12-08
包含cdnjsnet的词条

本文目录一览: 1、webpack使用HtmlWebpackPlugin进行cdn配置 2、优酷前端如何处理后端返回的切片视频流? 3、为什么需要使用及如何使用CDN 4、JS实现的将html转为pd

2023-12-08
包含查找替换js网页值的词条

本文目录一览: 1、js如何替换网页内容?能做的奖励50 2、怎么替换网页中的JS函数 3、如何用javascript全部替换网页内某个字符串 4、怎样用js替换网页里的指定字符串? 5、《web前端

2023-12-08
包含js网页插入html的词条

本文目录一览: 1、javascript怎么添加html标签?? 2、javascript怎么添加html标签? 3、怎么用JS给HTML标签添加内容 4、如何在 JS 中嵌入 HTML 代码 5、如

2023-12-08
包含java开源cms管理系统的词条

2022-11-18
包含js编译html代码的词条

本文目录一览: 1、如何用js动态写入html代码 2、如何使用js动态生成html代码 3、js中写的html代码怎么运行 如何用js动态写入html代码 所谓动态写入方法就是源文件代码中原来没有内

2023-12-08