OC和JS代码的互调
01 OC调用JS的代码
NSString *str = [self.webView stringByEvaluatingJavaScriptFromString:@"sum()"];
02 JS怎么调用OC的说明
新的需求:点击按钮的时候拨打电话
但是我在点击按钮的时候,用户是不知道的,我们怎么能够知道用户点击了网页上面的一个按钮,只能通过一个技巧,那就是自己搞一个特定的协议头比如说xmg://,当我拦截到你的网络请求的时候,只需要判断一下当前的协议头是不是这个就能判断你现在是否是JS调用。
OC里面有通过字符串生成SEL类型的方法,所以当拿到数据之后做下面的事情
1)截取方法的名称
2)将截取出来的字符串转换为SEL
3)利用performSelect方法来调用SEL
03 涉及到的相关方法
[@"abc" hasPrefix:@"A"] //判断字符串是否以一个固定的字符开头,这里为A
//截串操作
- (NSString *)substringFromIndex:(NSUInteger)from;
//切割字符串,返回一个数组
- (NSArray<NSString *> *)componentsSeparatedByString:(NSString *)separator;
//替换操作
- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement
//把string包装成SEL
SEL selector = NSSelectorFromString(sel);
04 如何屏蔽警告
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
//-Warc-performSelector-leaks为唯一的警告标识
[self performSelector:selector withObject:nil];
#pragma clang diagnostic pop
OC和JS代码的互调的更多相关文章
- IOS-网络(网页开发-UIWebView,HTML,CSS,JavaScript,OC和JS代码互调)
一.网页基础 // // ViewController.m // IOS_0218_网页开发1 // // Created by ma c on 16/2/18. // Copyright © 201 ...
- UIWebView中Html中用JS调用OC方法及OC执行JS代码
HTML代码: <html> <head> <title>HTML中用JS调用OC方法</title> <meta http-equiv=&quo ...
- [iOS Hybrid实践:UIWebView中Html中用JS调用OC方法,OC执行JS代码]
原理: 1.JS调用OC 每次webview执行跳转时都会被iOS给拦截,执行下面函数获得系统允许. 因此可以根据跳转信息转给系统,执行相应功能,比如打开相册等. // 网页中的每一个请求都会被触发 ...
- OC 调用JS 代码 处理HTML5 实战
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; ...
- OC和JS交互的三种方法
看简书上说一共有六种OC和JS交互的方法,但是前三种原理都一致,都是通过检测.拦截Url地址实现互相调用的.剩下的react native等第三方框架原理不一样,也没有去研究,下边记录我使用的三种方法 ...
- Mac Webview OC与JS交互实现
1.首先,需要定义一个JS可识别的变量(如external)用于OC与JS交互 - (void)webView:(WebView *)sender didClearWindowObject:(WebS ...
- iOS WKWebView OC 与 JS 交互学习
我写WKWebView 想让 服务端相应 一个 方法但是不响应,根据 UIWebView 用 JSContext就能拿到响应的处理经验是不是服务端 也需要 对 WKwebView有兼容的一个写法??? ...
- ios-UIWebView中js和oc代码的互调
webview是ios中显示远程数据的网页控件,webview能显示的内容很多,MP4.文本.pdf等等: 关于js和oc代码的互相调用 1:oc中调用js代码; >>oc中调用js代码很 ...
- JS代码和OC代码的相互调用
JS调用OC 很多应用里面或多或少的调用了网页,来达到绚丽的效果,所谓的JS调用OC.....举个例子吧,网页上有个按钮 点击按钮跳转界面,跳转的动作由OC的代码实现. OC调用JS 还是举个例子,我 ...
随机推荐
- [Error]ValueError: Object arrays cannot be loaded when allow_pickle=False
问题描述使用numpy的函数 numpy.load() 加载数据时报错: ValueError: Object arrays cannot be loaded when allow_pickle=Fa ...
- RTD2172替代方案|TYPEC转HDMI4K@60HZ拓展坞|CS5265替代RTD2172
瑞昱RTD2172是TYPEC转HDMI4K60HZ音视频数据转换器芯片.CS5265可以替代兼容RTD2172,除了实现同等的转换功能外且整体方案成本和性价比方面比RTD2172要高,且外围器件较少 ...
- Java中的关键字有哪些?「Java中53个关键字的意义及使用方法」
Java中的关键字有哪些? 1)48个关键字:abstract.assert.boolean.break.byte.case.catch.char.class.continue.default.do. ...
- Python中切片方法总结
对字符串或列表使用切片方法进行操作时 对包含[-1]的方法的使用经常用错 其实[-1]即指最后一个元素(同理[-2]指倒数第二个元素) 现总结如下 以便加深记忆 >>> li = [ ...
- win10系统微软账号登陆错误报错误码0x80190001
https://blog.csdn.net/u012878537/article/details/91353248 使用onenote同步的时候报出这样的错误. 知道问题出在了哪里,就容易解决了不是. ...
- PowerShell 之常用方法
随笔分类 - 常用 [PowerShell]文件的解压与压缩 摘要:1 New-Item -ItemType File 1.txt -Force #新建文本文件 2 Compress-Archive ...
- VMware桥接模式连接局域网和互联网
第一步:确认本地网关地址 第二步选择桥接模式: 我比较幸运,桥接到"自动",就已经连接成功.不用逐个试错. 修改 ifcfg-ens33 和 新建 ifcfg-br0 [root@ ...
- SpringMVC拦截器的应用
一.作用 好文章参考:https://www.cnblogs.com/panxuejun/p/7715917.html 对请求进行预处理和后处理: 使用场景: 登录验证,判断用户是否登录 权限验证,判 ...
- 第51篇-SharedRuntime::generate_native_wrapper()生成编译入口
当某个native方法被调用时,一开始它会从解释入口进入,也就是我之前介绍的.由InterpreterGenerator::generate_native_entry()函数生成的入口例程.在这个例程 ...
- 日K蜡烛图
股票价格涨跌趋势,常用蜡烛图技术中的K线图来表示,分为按日的日K线.按周的周K线.按月的月K线等.以日K线为例,每天股票价格从开盘到收盘走完一天,对应一根蜡烛小图,要表示四个价格:开盘价格Open(早 ...