iOS 常见的JS与iOS交互的需求与解决方案
更新时间: 2017.3.15
1.网页上获取登录id信息
直接在网页地址后面拼接上用户信息
例如: http://host/mine.asp?phoneid=18739929333
2.获取网页上的所有图片链接
注入获取图片标签链接的JS方法 —> iOS调用JS方法获取到所有img标签下的链接(字符串形式)—> 分割字符串获取结果数组
// 获取mainNSString *js_result = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByClassName(\"main\")"];//这里是js,主要目的实现对url的获取static NSString * const jsGetImages =@"function getImages(){\var objs = document.getElementsByTagName(\"img\");\var imgScr = '';\for(var i=0;i<objs.length;i++){\imgScr = imgScr + objs[i].src + '+';\};\return imgScr;\};"; // 获取img标签[webView stringByEvaluatingJavaScriptFromString:jsGetImages];//注入js方法// img 标签NSString *urlResurlt = [webView stringByEvaluatingJavaScriptFromString:@"getImages()"];NSMutableArray *mUrlArray = [NSMutableArray arrayWithArray:[urlResurlt componentsSeparatedByString:@"+"]];if (mUrlArray.count >= 2) {[mUrlArray removeLastObject];}// mUrlArray is the result url array
3.JS调用iOS方法
获取JS调用时机—> 调用iOS方法
以 JavaScriptCore环境为例:
首先你需要在 - (void)webViewDidFinishLoad:(UIWebView *)webView
方法中获取到网页中的JS上下文, 然后再知道JS里面定义的函数有哪些的前提下定义OC命令回调:
Ex: 我这里网页中有JS函数:
function scanClick() {scan();}
对应完成加载的代理方法中我可以写:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{// 获取到网页中的JS上下文JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];// 定义对应JS方法被调用的时候需要进行的操作context[@"scan"] = ^() {NSLog(@"扫一扫啦");};
}
4.当检测到要访问某个网址的时候禁止访问或者做其他业务处理
webView代理方法中有一个决定web是否正常加载的方法:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
在内部可以获取到将要访问的网址, 判断该网址, 如果符合条件就返回NO或者执行其他操作:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{if ([[[request URL] absoluteString] isEqualToString:@"http://www.baidu.com"]) {// return NO means webView will not start load requestreturn NO;// or do something else// ...}return YES;
}
iOS 常见的JS与iOS交互的需求与解决方案相关推荐
- iOS: JS和Native交互的两种方法,iosjsnative交互
iOS: JS和Native交互的两种方法,iosjsnative交互 背景: UIWebView: iOS 用来展示 web 端内容的控件. 1. 核心方法: - (NSString*)string ...
- android ios web兼容,js与android iOS 交互兼容
js与android iOS 交互兼容 在Android与js交互方面还是要比iOS方便很多,而UIWebView只暴漏出- (BOOL)webView:(UIWebView *)webView sh ...
- webviewjavascriptbridge android ios,js与ios交互使用WebViewJavascriptBridge如何写多个函数
//js与webview交互初始化 function setupWebViewJavascriptBridge(callback) { if (window.WebViewJavascriptBrid ...
- iOS WKWebView和JS交互的两种方式
2019独角兽企业重金招聘Python工程师标准>>> 本文介绍两种方式实现iOS WKWebView和JS交互 WKWebViewConfiguration注入WKScriptMe ...
- iOS下JS和原生交互,函数互调
现在越来越多的APP都是H5和原生混合开发,这样确实方便快捷,但是H5的部分总避免不了很多与原生的交互,原生调JS函数还比较简单,原生的API函数stringByEvaluatingJavaScrip ...
- iOS JS与OC交互
iOS JS与OC交互 本文内容导航 1.`UIWebView` JS 与 OC 交互 1.1 OC 调用 JS 函数 1.1.1 OC 拼接 JS 字符串调用 JS 方法 1.1.2 使用 JSCo ...
- iOS端手游和c++交互 lua和c++交互
iOS端手游和c++交互 lua和c++交互 进了一家新的手游公司,坐标杭州,因为之前是做发行做了一段时间,才知道互联网真正赚钱的是手游.所以从武汉来杭州就一心想找一家手游公司,从而深入了解一下iOS ...
- iOS原生App与H5页面交互 离线缓存 笔记
//webview每次加载之前都会调用这个方法,利用该代理方法截取JS的href来调用原生的方法- (BOOL)webView:(UIWebView*)webView shouldStartLoadW ...
- Vue.js 使用 Swiper.js 在 iOS 11 时出现错误
前言 在H5项目中,需要用到翻页效果,通过 Swiper 来实现,安装 Swiper npm i swiper -S 但是实际使用中,发现低版本 iOS < 11 会出现下面这个错误: Synt ...
- 使用 iosOverlay.js 创建 iOS 风格的提示和通知
iosOverlay.js 用于在 Web 项目中实现 iOS 风格的通知和提示效果.为了防止图标加载的时候闪烁,你需要预加载的图像资源.不兼容 CSS 动画的浏览器需要 jQuery 支持.浏览器兼 ...
最新文章
- C++中的cin、cin.getline()、getline()函数比较
- linux禁止客户端上传文件_图片/文件上传如此简单|macOS 图床客户端 uPic
- JS中使用定时动态获取系统当前时间
- springmvc请求返回一个字符_SpringMVC系列之Web利器SpringMVC
- Derby数据库备份
- 用Python在Tomcat成功启动后自动打开浏览器访问Web应用
- JVM专题之类加载机制
- 《GPU高性能编程CUDA实战》代码整理
- 【观点讨论与支撑】明星和成功人士真的就只有成功的一面吗?背后的心酸和痛苦的经历我感觉更重要!
- spring cloud微服务分布式云架构简介
- c语言是非结构化程序语言_1、C语言是一种结构化程序设计语言
- 天线SMA处抗静电保护收发开关
- zmap扫描mysql_基于zmap 的应用层扫描器 zgrab (一)
- k2p openwrt路由部署阿里云aliyun-ddns
- 纯c语言----学生成绩管理系统
- MacDonalds 翻译成“麦当劳”为什么好?英语翻译技巧E
- 【Python】8.有益的探索
- 毁掉一个孩子只要十步(80%的家长都在做)
- 计算机一级基础及msoffice应用,全国计算机等级考试教程一级计算机基础及MS Office应用...
- ios xcode如何修改应用的名称