- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网页中文本朗读功能开发实现
前几天完成了一个需求,在网页中完成鼠标指向哪里,就用语音读出所指的文本。如果是按钮、链接、文本输入框,则还还要给出是什么的提醒。同时针对大段的文本,不能整段的去读,要按照标点符号进行断句处理。重点当然就是先获取到当前标签上的文本,再把文本转化成语音即可。标签朗读这个很简单了,只用根据当前是什么标签,给出提示即可。// 标签朗读文本vartagTextConfig = { ? ?a: 链接, ? ?input[text]: 文本输入框, ? ?input[password]: 密码输入框, ? ?button: 按钮, ? ?img: 图片};还有需要朗读的标签,继续再添加即可。然后根据标签,返回前缀文本即可。/** * 获取标签朗读文本 * @param {HTMLElement} el 要处理的HTMLElement * @returns {String} ? 朗读文本 */functiongetTagText(el) { ? ?if(!el) return; ? ?vartagName = el.tagName.toLowerCase(); ? ?// 处理input等多属性元素 ? ?switch (tagName) { ? ? ? ?caseinput: ? ? ? ? ? ?tagName += [ + el.type + ]; ? ? ? ? ? ?break; ? ? ? ?default: ? ? ? ? ? ?break; ? ?} ? ?// 标签的功能提醒和作用应该有间隔,因此在最后加入一个空格 ? ?return (tagTextConfig[tagName] || ) + ;}获取完整的朗读文本就更简单了,先取标签的功能提醒,再取标签的文本即可。文本内容优先取 title 其次 alt 最后 innerText。/** * 获取完整朗读文本 * @param {HTMLElement} el 要处理的HTMLElement * @returns {String} ? 朗读文本 */functiongetText(el) { ? ?if(!el) return; ? ?returngetTagText(el) + (el.title || el.alt || el.innerText || );}这样就可以获取到一个标签的功能提醒和内容的全部带朗读文本了。正文分隔接下来要处理的就是正文分隔了,在这个过程中,踩了不少坑,走了不少弯路,好好记录一下。首先准备了正文分隔的配置:// 正文拆分配置varsplitConfig = { ? ?// 内容分段标签名称 ? ?unitTag: p, ? ?// 正文中分隔正则表达式 ? ?splitReg: /[,;,;。]/g, ? ?// 包裹标签名 ? ?wrapTag: label, ? ?// 包裹标签类名 ? ?wrapCls: speak-lable, ? ?// 高亮样式名和样式 ? ?hightlightCls: speak-help-hightlight, ? ?hightStyle: background: #000!important; color: #fff!important};最开始想的就是直接按照正文中的分隔标点符号进行分隔就好了呀。想法如下:获取段落全部文本使用?split(分隔正则表达式)?方法将正文按照标点符号分隔成小段每个小段用标签包裹放回去即可然而理想很丰满,现实很骨感。两个大坑如下:split?方法进行分隔,分隔后分隔字符就丢了,也就是说把原文的一些标点符号给弄丢了。如果段落内还存在其他标签,而这个标签内部也正好存在待分隔的标点符号,那包裹分段标签时直接破换了原标签的完整性。关于第一个问题,丢失标点的符号,考虑过逐个标点来进行和替换 split 分隔方法为逐个字符循环来做。前者问题是原本一次完成的工作分成了多次,效率太低。第二种感觉效率更低了,分隔本来是很稀疏的,但是却要变成逐个字符出判断处理,更关键的是,分隔标点的位置要插入包裹标签,会导致字符串长度变化,还要处理下标索引。代码是机器跑的,或许不会觉得烦,但是我真的觉得好烦。如果这么干,或许以后哪个AI或者同事看到这样的代码,说不定会说“这真是个傻xxxx”。第二个问题想过很多办法来补救,如先使用正则匹配捕获内容中成对的标签,对标签内部的分隔先处理一遍,然后再处理整个的。想不明白问题二的,可参考一下待分隔的段落:p这是一段测试文本,这里有个链接。a您好,可以点击此处进行跳转/a还有其他内容其他内容容其他内容容其他内容,容其他内容。/p如先使用 /((\w+?))(.+?)\/\2(?=)/g 正则,依次捕获段落内被标签包裹的内容,对标签内部的内容先处理。但是问题又来了,这
您可能关注的文档
最近下载
- 24张安全目视化:流程图、管理检查要点.pptx VIP
- 2024北京广渠门中学初一(上)期中道德与法治试题.docx VIP
- 2025中级经济师《经济基础知识》三色笔记.pdf VIP
- GB/T 17215.321-2021电测量设备(交流) 特殊要求 第21部分:静止式有功电能表(A级、B级、C级、D级和E级).pdf
- Kollmorgen电机AKD驱动器手册中文版.pdf VIP
- 河南省九师联考2024-2025学年高一上学期11月期中考试地理试卷(含答案).pdf VIP
- 河南省九师联盟2024-2025学年高一上学期期中考试历史试题(含答案).pdf VIP
- 日立电梯MCA13中文注释版电气原理图.pdf
- 财务总监培训战略成本管理-战略成本管理.ppt VIP
- 战略成本管理 .pdf VIP
原创力文档


文档评论(0)