由于webview 加载的是网页 只能用js 进行页内查找  废话不说上代码

//注入 JS 查找

NSString *resPath =[[NSBundle mainBundle] resourcePath];static NSString *jsQuery =nil;staticdispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

jsQuery= [NSString stringWithContentsOfFile:[resPath stringByAppendingPathComponent:@"js_plugins.js"] encoding:NSUTF8StringEncoding error:nil];

});

NSString*js = [NSString stringWithFormat:@"var highlightPlugin = document.getElementById('js_plugins'); \

if (highlightPlugin == undefined) { \

document.body.innerHTML += '

\

.utaHighlight { background-color:yellow; } \

.selectSpan { background-color:yellow; color:red;} \\

'; \

%@ \

}", jsQuery];

[self stringByEvaluatingJavaScriptFromString:js];//清除上次的高亮并设置当前关键字高亮

[self stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"jQuery('body').removeHighlight().utaHighlight('%@');", str]];//获取关键字数量

NSString *count = [self stringByEvaluatingJavaScriptFromString:@"jQuery('.utaHighlight').length"];if ([count integerValue]>0) {

[self focusToFindIndex:0];

}

dispatch_once 用单例的话不用每调用一次都读取一次文件,后面就是一些调用一些js文件的方法。

可扩展上一个下一个,暂时没有实现。

其他具体文件方法可以看demo

http://pan.baidu.com/s/1eQAGNPC

v 14.10.31 更新:

增加扩展上一个和下一个,其实也很简单

既然要用到上一个、下一个,肯定要记录下当前的位置,总的数量

1.定义两个全局变量

static NSInteger sCount ;//总数量

static NSInteger sNumber  = 1;//当前位置(默认从1开始)

2.增加上一个 下一个方法

- (void)nextFindIndex

{if (sNumber>=sCount) {return;

}

[self focusToFindIndex:sNumber];

sNumber++;

}- (void)lastFindIndex

{if (sNumber<=0) {return;

}

sNumber--;

[self focusToFindIndex:sNumber];

}

3.到这里的,之前写focusToFindIndex 方法需要修改

- (void)focusToFindIndex:(NSInteger)findIndex

{

NSString*js = [NSString stringWithFormat:@"scrollToFindIdx(%d);", findIndex];

CGFloat offset=[[self stringByEvaluatingJavaScriptFromString:js] floatValue];

CGFloat contentHeight=self.scrollView.contentSize.height;

offset= MIN(offset, contentHeight-self.scrollView.bounds.size.height);

[self.scrollView setContentOffset:CGPointMake(0, offset) animated:YES];

}

同样highlightAllOccurencesOfString 方法也需要修改,即给变量赋值

//获取关键字数量

NSString *count = [self stringByEvaluatingJavaScriptFromString:@"jQuery('.utaHighlight').length"];

sCount= [count intValue];

sNumber= 1;

if ([count intValue]>0) {

[self focusToFindIndex:0];

}

4.完毕

ios 使用webview 查找_ios: WebView内高亮搜索相关推荐

  1. ios 使用webview 查找_iOS开发WKWebView与JS的交互

    iOS8以后,Apple公司推出了WKWebView,对比之前的UIWebView不论是处理速度还是内存性能,都有了大幅度的提升! 那么下面我就分享一下WKWebView与JS的交互. 首先使用WKW ...

  2. iOS OC与JS交互(WebView监听事件)

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

  3. 微信小程序与webview H5交互(内嵌H5跳转原生页面)

    在开发中,使用web-view组件内嵌H5页面是非常常见的,但很多人不知道webview内嵌H5如何与原生小程序 交互.下面介绍下实现微信小程序与webview H5交互的方法. web-view功能 ...

  4. Android开发实用小技巧九——内嵌WebView的使用(内置浏览器)

    文章目录 前言 一.效果展示 二.代码 1.样式布局 2.活动页面 总结 前言 内嵌WebView的使用(内置浏览器). 一.效果展示 二.代码 1.样式布局 res/layout/activity_ ...

  5. android webview onkeydown,android – WebView片段内的OnKeyDown

    它可能会奏效,但这不是一个好主意.如果你没有正确处理Fragment或者你的代码中的某个地方对它的生命周期有点粗心,它很可能会导致崩溃.但有一个简单的方法来解决这个问题.而不是使用静态方法,在实例本身 ...

  6. android9系统webview崩溃,Android WebView已开始在Android 9上崩溃

    您好专家Android开发人员: 我们有一个android应用,我们的基本工作流程如下 通过电子邮件或短信向用户发送了链接 用户单击链接,然后在Chrome或Android默认浏览器上打开一个页面,并 ...

  7. ios 判断数字大小_iOS开发积累2

    3.设备的CPU架构简介 模拟器: 4s~5 : i386 5s~6plus : x86_64 真机: 3gs~4s : armv7 5~5c : armv7s (静态库只要支持了armv7,就可以跑 ...

  8. ios wkwebview弹框_iOS 加载WKWebView

    WKWebView是苹果在iOS 8之后推出的框架WebKit中的浏览器控件, 其加载速度比UIWebView快了许多, 但内存占用率却下降很多, 也解决了加载网页时的内存泄露问题. WKWebVie ...

  9. 背水一战 Windows 10 (65) - 控件(WebView): 对 WebView 中的内容截图, 通过 Share Contract 分享 WebView 中的被选中的内容...

    原文:背水一战 Windows 10 (65) - 控件(WebView): 对 WebView 中的内容截图, 通过 Share Contract 分享 WebView 中的被选中的内容 [源码下载 ...

最新文章

  1. socket编程:I/O模型
  2. WebServieces 部署到PocketPC上的问题(SystemNotSupportException)
  3. python 基础命令-详解python常用命令行选项与环境变量
  4. 水电缴费系统php源码_简易水电费管理系统源程序代码
  5. python递归函数代码_Python递归函数
  6. ExtJS 2.0官方实例目录
  7. 互联网公司为啥不使用mysql分区表?
  8. vim支持nginx语法高亮
  9. 计算机应用基础专科作业二,电子科大18秋《计算机应用基础(专科)》在线作业2...
  10. 使用计算机计算一个多边形,多边形面积计算器
  11. 关于java多线程堆和栈的共享问题
  12. Android应用开发性能优化完全分析,完美收官
  13. 逆向小试 ―― QQ 自动登录器原理分析
  14. 二级考试内容之C和Python
  15. FPGA控制AD7606进行数据采集
  16. 如何在服务器搭建oa系统,如何在云主机搭建oa服务器
  17. 还记得这些常用String方法吗?
  18. JAVA 知识点 | Hook
  19. encode decode
  20. 某强人对几款杀毒软件的形容

热门文章

  1. 在没有Release的日子里
  2. 铁电存储器FRAM的优劣势
  3. 解决了一个Web网页显示不全的BUG
  4. SpringBoot 内置tomcat 的 request.getServletContext().getRealPath(“/”) 问题与tomat­-docbase 和 basedir的关系
  5. ROS与ABB120
  6. linux解压z格式文件夹,使用7zip解决解压zip格式文件名乱码, 最简单的解决解压z...
  7. 简易数据看板--直播订单统计分析
  8. Go语言版黑白棋(十一):机器落子
  9. TUTK[MediaSDK][Android] 如何在android系统上实现后台编码功能
  10. 求问大神!类似于TUTK的P2P云平台还有哪些啊?