Andorid与webView交互,获取webView选中文字,兼容了iframe

js调试效果:

下面主要是拼装js代码 :

     /** * @Description 获取webView选中文字内容 * @param webView* @param callBack*/public static void webViewGetSelectedData(WebView webView,webViewGetSelectedDataCallBack callBack) {String js ="function selectEnable(document) {"+ "    document.oncontextmenu = new Function(\"if(event){event.returnValue=true;}\");"+ "    document.onselectstart = new Function(\"if(event){event.returnValue=true;}\");"+ "    let frames = document.getElementsByTagName(\"iframe\");"+ "    if (frames.length > 0) {"+ "        for (var i = 0; i < frames.length; i++) {"+ "            document = frames[i].contentDocument;"+ "            selectEnable(document);"+ "        }"+ "    }"+ "}"+ "function selectTxt(document) {"+ "    let rtnTxt = \"\";"+ "    rtnTxt = document.getSelection ? document.getSelection().toString() : document.selection.createRange().text;"+ "    let frames = document.getElementsByTagName(\"iframe\");"+ "    if (frames.length > 0) {"+ "        for (var i = 0; i < frames.length; i++) {"+ "            document = frames[i].contentDocument;"+ "            let sltTxt = selectTxt(document);"+ "            if (sltTxt != \"\") {"+ "                rtnTxt = sltTxt;"+ "            }"+ "        }"+ "    }"+ "    return rtnTxt;"+ "}"+ "(function(){"+ "    selectEnable(document);"+ "    return selectTxt(document);"+ "})()";/* android系统4.4以上的时候调用 4.4以下忽略*/webView.evaluateJavascript("javascript:" + js, txt -> {//todo 这里可以对返回文本进行处理,比如转为中文字符,过滤非法字符callBack.onFinished(txt);});        }public interface webViewGetSelectedDataCallBack{/**@param value*/void onFinished(String value);}

至于如何调用,可以通过 

@Override
public void onActionModeStarted(ActionMode mode) {……webViewGetSelectedData(webView, value -> {               Log.i("getSelection", "getSelectedData: "+value);});……super.onActionModeStarted(mode);
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/284997.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言试题183之编写一个程序,从标准的输入读取一些字符,并统计下各类字符所占的百分比

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目: 编写一…

C# 11 的新特性和改进前瞻

前言.NET 7 的开发还剩下一个多月就要进入 RC&#xff0c;C# 11 的新特性和改进也即将敲定。在这个时间点上&#xff0c;不少新特性都已经实现完毕并合并入主分支C# 11 包含的新特性和改进非常多&#xff0c;类型系统相比之前也有了很大的增强&#xff0c;在确保静态类型安全的…

ajax加php实现三级联动

js代码 <script type"text/javascript"> function get_next(t,pid){ //当前元素的id&#xff0c;当前option的value&#xff0c;一般都是id吧&#xff1f;反正我的是 $.ajax({ type: "POST", url: "/index.p…

iOS 玩转CocoaPods

####导语&#xff1a; 有时候看到其他人 source开源时候用pod xxx 配置在你的Podfile文件中&#xff0c;执行下pod install 或者 pod update &#xff0c;代码瞬间就到你的pod库, 顿时觉得高大上。那是怎么做到的呢&#xff1f; Agenda: CocoaPods 的由来Github 使用PodSpec介绍…

【ArcGIS Pro微课1000例】0015:ArcGIS Pro中属性字段分式标注案例教程

文章目录 1. 符号化2. 属性字段分式标注在ArcGIS及Pro中很容易实现格式化标签的,本文讲解在ArcGIS Pro中实现属性字段分式标注,结果如下图所示: 1. 符号化 右键数据图层→符号系统,打开符号系统对话框,住符号系统选择【唯一值】,字段1选择NAME。 2. 属性字段分式标注 加…

mysql主从

1》mysql主从的工作原理&#xff1a;主服务器将更新写入二进制日志文件&#xff08;bin_log&#xff09;&#xff0c;并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时&#xff0c;它通知 主服务器从服务器在日志中读…

C语言试题184之编写一个函数,从标准输入读取一个字符串,把字符串复制到动态内存分配的内存中,并返回该字符串的拷贝,这个函数不应该对读入字符串的长度作任何限制

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目: 编写一…

[转]Linux面试题(2020最新版)

文章目录 Linux 概述 什么是LinuxUnix和Linux有什么区别&#xff1f;什么是 Linux 内核&#xff1f;Linux的基本组件是什么&#xff1f;Linux 的体系结构BASH和DOS之间的基本区别是什么&#xff1f;Linux 开机启动过程&#xff1f;Linux系统缺省的运行级别&#xff1f;Linux 使…

MSBuild 命令的简单使用

MSBuild 命令的简单使用独立观察员 2022 年 7 月 7 日位置在 VS 安装目录下&#xff0c;如&#xff1a;D:Microsoft Visual Studio2022EnterpriseMSBuildCurrentBin命令MSBuild 命令行参考 - MSBuild | Microsoft Docs&#xff08;https://docs.microsoft.com/zh-cn/visualstud…

ArcGIS实验教程——实验四十:ArcGIS洪水淹没分析案例教程

文章目录 一、洪水淹没效果动画演示二、实验数据三、实验过程1. 加载数据2. 符号化3. 夸大处理4. 动画制作5. 动画播放6. 导出动画基于数字高程模型 ( DEM )格网模型,实现给定水深情况下洪水淹没区的计算模型,讨论洪水淹没演进过程可视化实现的关键技术,以三维可视化方式,动…

数据库显示日期时仅仅显示“年-月-日”的问题

日期时间实际上存放的是年-月-日 时&#xff1a;分&#xff1a;秒&#xff0c;但是仅仅显示了年-月-日&#xff0c;未显示时分秒信息。解决方法&#xff1a;工具-首选项-数据库》NLS日期格式&#xff1a;YYYY-MM-DD HH24:MI:SS&#xff0c;保存后重新查询。转载于:https://blog…

C语言试题185之编写calloc函数,函数内部使用malloc函数来获取内存

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目: 编写ca…

iOS11、iPhone X 适配简单,但你的Apple思维适配做好了么?

2017.10.23 iPhone X 的刘海为什么这么丑&#xff1f; 如果乔布斯在的话就一定不会允许这样的产品交付给用户么&#xff1f; 作为 iOS 开发人员该对 Apple 有怎样的认识&#xff1f; Apple 未来的发展的大方向是什么&#xff1f; 倘若没有 Apple 的存在&#xff0c;我想各位现在…

【ArcGIS遇上Python】ArcGIS Python按照指定字段批量筛选不同类型的图斑(以土地利用数据为例)

基于土地利用数据,根据用地类型名称,批量筛选出不同类型的用地,生成不同类型的shp数据,以类型名称命名。 文章目录 1. 土地利用原始数据2. 根据名称批量筛选结果3. ArcGIS Python批处理代码ArcGIS Python根据字段属性批量筛选生成shp图层 1. 土地利用原始数据 2. 根据名称批…

使用 StringZipper 压缩、解压字符串

数据压缩是一个软件开发中的常见需求&#xff1a;很多时候需要先将较大的数据进行压缩然后再通过网络等进行传输。在 .NET 中&#xff0c;有多个压缩算法供我们选择&#xff1a;Deflate、GZip 和 Br 。这些压缩算法都是基于流&#xff08;Stream&#xff09;的&#xff0c;在对…

【转载】【面试题】你是一个测试工程师,如何保证软件质量?

2019独角兽企业重金招聘Python工程师标准>>> *参*答*案&#xff1a;质量是有层次&#xff08;内部质量&#xff0c;外部质量&#xff0c;使用质量&#xff0c;过程质量&#xff09; 内部质量&#xff1a;主要指代码的质量&#xff0c;就需要引入开发工程师进…

C语言试题186之读取范围在1和标准输入读取的size之前每个数据出现的次数

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目: 读取范…

[转]常见的用户密码加密方式以及破解方法

【作者】张辉&#xff0c;就职于携程技术中心信息安全部&#xff0c;负责安全产品的设计与研发。 作为互联网公司的信息安全从业人员经常要处理撞库扫号事件&#xff0c;产生撞库扫号的根本原因是一些企业发生了信息泄露事件&#xff0c;且这些泄露数据未加密或者加密方式比较弱…

H5学习笔记

什么是 HTML&#xff1f; HTML 是用来描述网页的一种语言。 HTML 指的是超文本标记语言 (Hyper Text Markup Language)HTML 不是一种编程语言&#xff0c;而是一种标记语言 (markup language)标记语言是一套标记标签 (markup tag)HTML 使用标记标签来描述网页关键字&#xff1a…

【ArcGIS遇上Python】ArcGIS Python获取某个字段的唯一值(获取指定字段的不同属性值)

以土地利用数据为例,DLMC字段为每个图斑的用地类型,怎样用Python代码获取该字段的属性唯一值? Python代码实现结果: Python源代码: import arcpy from arcpy import env arcpy.gp.overwriteOutput=