ios 使用webview 查找_ios: WebView内高亮搜索
由于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内高亮搜索相关推荐
- ios 使用webview 查找_iOS开发WKWebView与JS的交互
iOS8以后,Apple公司推出了WKWebView,对比之前的UIWebView不论是处理速度还是内存性能,都有了大幅度的提升! 那么下面我就分享一下WKWebView与JS的交互. 首先使用WKW ...
- iOS OC与JS交互(WebView监听事件)
在iOS应用的开发过程中,我们经常会使用到WebView,当我们对WebView进行操作的时候,有时会需要进行源生的操作.那么我记下来就与大家分享一下OC与JS交互. 首先先说第一种方法,并没有牵扯O ...
- 微信小程序与webview H5交互(内嵌H5跳转原生页面)
在开发中,使用web-view组件内嵌H5页面是非常常见的,但很多人不知道webview内嵌H5如何与原生小程序 交互.下面介绍下实现微信小程序与webview H5交互的方法. web-view功能 ...
- Android开发实用小技巧九——内嵌WebView的使用(内置浏览器)
文章目录 前言 一.效果展示 二.代码 1.样式布局 2.活动页面 总结 前言 内嵌WebView的使用(内置浏览器). 一.效果展示 二.代码 1.样式布局 res/layout/activity_ ...
- android webview onkeydown,android – WebView片段内的OnKeyDown
它可能会奏效,但这不是一个好主意.如果你没有正确处理Fragment或者你的代码中的某个地方对它的生命周期有点粗心,它很可能会导致崩溃.但有一个简单的方法来解决这个问题.而不是使用静态方法,在实例本身 ...
- android9系统webview崩溃,Android WebView已开始在Android 9上崩溃
您好专家Android开发人员: 我们有一个android应用,我们的基本工作流程如下 通过电子邮件或短信向用户发送了链接 用户单击链接,然后在Chrome或Android默认浏览器上打开一个页面,并 ...
- ios 判断数字大小_iOS开发积累2
3.设备的CPU架构简介 模拟器: 4s~5 : i386 5s~6plus : x86_64 真机: 3gs~4s : armv7 5~5c : armv7s (静态库只要支持了armv7,就可以跑 ...
- ios wkwebview弹框_iOS 加载WKWebView
WKWebView是苹果在iOS 8之后推出的框架WebKit中的浏览器控件, 其加载速度比UIWebView快了许多, 但内存占用率却下降很多, 也解决了加载网页时的内存泄露问题. WKWebVie ...
- 背水一战 Windows 10 (65) - 控件(WebView): 对 WebView 中的内容截图, 通过 Share Contract 分享 WebView 中的被选中的内容...
原文:背水一战 Windows 10 (65) - 控件(WebView): 对 WebView 中的内容截图, 通过 Share Contract 分享 WebView 中的被选中的内容 [源码下载 ...
最新文章
- socket编程:I/O模型
- WebServieces 部署到PocketPC上的问题(SystemNotSupportException)
- python 基础命令-详解python常用命令行选项与环境变量
- 水电缴费系统php源码_简易水电费管理系统源程序代码
- python递归函数代码_Python递归函数
- ExtJS 2.0官方实例目录
- 互联网公司为啥不使用mysql分区表?
- vim支持nginx语法高亮
- 计算机应用基础专科作业二,电子科大18秋《计算机应用基础(专科)》在线作业2...
- 使用计算机计算一个多边形,多边形面积计算器
- 关于java多线程堆和栈的共享问题
- Android应用开发性能优化完全分析,完美收官
- 逆向小试 ―― QQ 自动登录器原理分析
- 二级考试内容之C和Python
- FPGA控制AD7606进行数据采集
- 如何在服务器搭建oa系统,如何在云主机搭建oa服务器
- 还记得这些常用String方法吗?
- JAVA 知识点 | Hook
- encode decode
- 某强人对几款杀毒软件的形容
热门文章
- 在没有Release的日子里
- 铁电存储器FRAM的优劣势
- 解决了一个Web网页显示不全的BUG
- SpringBoot 内置tomcat 的 request.getServletContext().getRealPath(“/”) 问题与tomat-docbase 和 basedir的关系
- ROS与ABB120
- linux解压z格式文件夹,使用7zip解决解压zip格式文件名乱码, 最简单的解决解压z...
- 简易数据看板--直播订单统计分析
- Go语言版黑白棋(十一):机器落子
- TUTK[MediaSDK][Android] 如何在android系统上实现后台编码功能
- 求问大神!类似于TUTK的P2P云平台还有哪些啊?