更新时间: 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交互的需求与解决方案相关推荐

  1. iOS: JS和Native交互的两种方法,iosjsnative交互

    iOS: JS和Native交互的两种方法,iosjsnative交互 背景: UIWebView: iOS 用来展示 web 端内容的控件. 1. 核心方法: - (NSString*)string ...

  2. android ios web兼容,js与android iOS 交互兼容

    js与android iOS 交互兼容 在Android与js交互方面还是要比iOS方便很多,而UIWebView只暴漏出- (BOOL)webView:(UIWebView *)webView sh ...

  3. webviewjavascriptbridge android ios,js与ios交互使用WebViewJavascriptBridge如何写多个函数

    //js与webview交互初始化 function setupWebViewJavascriptBridge(callback) { if (window.WebViewJavascriptBrid ...

  4. iOS WKWebView和JS交互的两种方式

    2019独角兽企业重金招聘Python工程师标准>>> 本文介绍两种方式实现iOS WKWebView和JS交互 WKWebViewConfiguration注入WKScriptMe ...

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

    现在越来越多的APP都是H5和原生混合开发,这样确实方便快捷,但是H5的部分总避免不了很多与原生的交互,原生调JS函数还比较简单,原生的API函数stringByEvaluatingJavaScrip ...

  6. iOS JS与OC交互

    iOS JS与OC交互 本文内容导航 1.`UIWebView` JS 与 OC 交互 1.1 OC 调用 JS 函数 1.1.1 OC 拼接 JS 字符串调用 JS 方法 1.1.2 使用 JSCo ...

  7. iOS端手游和c++交互 lua和c++交互

    iOS端手游和c++交互 lua和c++交互 进了一家新的手游公司,坐标杭州,因为之前是做发行做了一段时间,才知道互联网真正赚钱的是手游.所以从武汉来杭州就一心想找一家手游公司,从而深入了解一下iOS ...

  8. iOS原生App与H5页面交互 离线缓存 笔记

    //webview每次加载之前都会调用这个方法,利用该代理方法截取JS的href来调用原生的方法- (BOOL)webView:(UIWebView*)webView shouldStartLoadW ...

  9. Vue.js 使用 Swiper.js 在 iOS 11 时出现错误

    前言 在H5项目中,需要用到翻页效果,通过 Swiper 来实现,安装 Swiper npm i swiper -S 但是实际使用中,发现低版本 iOS < 11 会出现下面这个错误: Synt ...

  10. 使用 iosOverlay.js 创建 iOS 风格的提示和通知

    iosOverlay.js 用于在 Web 项目中实现 iOS 风格的通知和提示效果.为了防止图标加载的时候闪烁,你需要预加载的图像资源.不兼容 CSS 动画的浏览器需要 jQuery 支持.浏览器兼 ...

最新文章

  1. C++中的cin、cin.getline()、getline()函数比较
  2. linux禁止客户端上传文件_图片/文件上传如此简单|macOS 图床客户端 uPic
  3. JS中使用定时动态获取系统当前时间
  4. springmvc请求返回一个字符_SpringMVC系列之Web利器SpringMVC
  5. Derby数据库备份
  6. 用Python在Tomcat成功启动后自动打开浏览器访问Web应用
  7. JVM专题之类加载机制
  8. 《GPU高性能编程CUDA实战》代码整理
  9. 【观点讨论与支撑】明星和成功人士真的就只有成功的一面吗?背后的心酸和痛苦的经历我感觉更重要!
  10. spring cloud微服务分布式云架构简介
  11. c语言是非结构化程序语言_1、C语言是一种结构化程序设计语言
  12. 天线SMA处抗静电保护收发开关
  13. zmap扫描mysql_基于zmap 的应用层扫描器 zgrab (一)
  14. k2p openwrt路由部署阿里云aliyun-ddns
  15. 纯c语言----学生成绩管理系统
  16. MacDonalds 翻译成“麦当劳”为什么好?英语翻译技巧E
  17. 【Python】8.有益的探索
  18. 毁掉一个孩子只要十步(80%的家长都在做)
  19. 计算机一级基础及msoffice应用,全国计算机等级考试教程一级计算机基础及MS Office应用...
  20. ios xcode如何修改应用的名称

热门文章

  1. Centos 7 配置 apache https访问以及Chrome 忽略证书错误继续
  2. webpack 介绍 安装 常用命令
  3. 十进制转化八进制,十六进制
  4. 洛谷P1134 阶乘问题[数论]
  5. ButterKnife View 注入
  6. 测试员:你知道未来移动测试的方向是什么样的吗?
  7. Android之MVC模式
  8. 关于asp.net页面缓存
  9. 15款非常有用的前端开发CSS网格(grid system)生成器
  10. poj 1125 Stockbroker Grapevine 很好的一道floyd入门题