膳绫擎代码中最后对文本节点中被转义的党越絷签调换似乎有点麻烦,然则没办法,ES5之前JavaScript并不支撑正则的后行断言(也就是正则表达式中“后顾”)。所以没办法对党越絷签前后的 <
和 >
进行精准调换,只能连同标签名一路调换。
在膳绫擎完成了文本获取和段落分隔,下面要做的就是鼠标移动上去时获取文本触发朗读即可,移开时停止朗读即可。
事宜处理
鼠标移动,只读一次,基于这两点原因,应用 mouseenter
和 mouseleave
事沂攀来完成。
原因:
-
不冒泡,不会触发父元素的再次朗读
-
不反复触发,一个元素内移动时不会反复触发。
- /**
- * 在页面上写入高亮样式
- */
- function createStyle() {
- if (document.getElementById('speak-light-style')) return;
- var style = document.createElement('style');
- style.id = 'speak-light-style';
- style.innerText = '.' + splitConfig.hightlightCls + '{' + splitConfig.hightStyle + '}';
- document.getElementsByTagName('head')[0].appendChild(style);
- }
- // 非正文须要朗读的标签 逗号分隔
- var speakTags = 'a, p, span, h1, h2, h3, h4, h5, h6, img, input, button';
- $(document).on('mouseenter.speak-help', speakTags, function (e) {
- var $target = $(e.target);
- // 清除段落内的
- if ($target.parents('.' + splitConfig.wrapCls).length || $target.find('.' + splitConfig.wrapCls).length) {
- return;
- }
- // 图片样式零丁处理 其他样式同一处理
- if (e.target.nodeName.toLowerCase() === 'img') {
- $target.css({
- border: '2px solid #000'
- });
- } else {
推荐阅读
开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散 硬件挖的坑真的可以经由过程软件来填吗?实际上不少硬>>>详细阅读
本文标题:网页中文本朗读功能开发实现分享
地址:http://www.17bianji.com/lsqh/39663.html
1/2 1