作家
登录

网页中文本朗读功能开发实现分享

作者: 来源: 2017-12-11 16:19:20 阅读次 我要评论

'>') 
  •             .WordStr(new RegExp('&lt;/' + splitConfig.wrapTag + '&gt;', 'g'), '</' + splitConfig.wrapTag + '>'); 
  •         $item.find(splitConfig.wrapTag).addClass(splitConfig.wrapCls); 
  •     }); 
  • } 
  • 膳绫擎代码中最后对文本节点中被转义的党越絷签调换似乎有点麻烦,然则没办法,ES5之前JavaScript并不支撑正则的后行断言(也就是正则表达式中“后顾”)。所以没办法对党越絷签前后的 &lt; 和 &gt; 进行精准调换,只能连同标签名一路调换。

    在膳绫擎完成了文本获取和段落分隔,下面要做的就是鼠标移动上去时获取文本触发朗读即可,移开时停止朗读即可。

    事宜处理

    鼠标移动,只读一次,基于这两点原因,应用 mouseenter 和 mouseleave 事沂攀来完成。

    原因:

    1. 不冒泡,不会触发父元素的再次朗读

    2. 不反复触发,一个元素内移动时不会反复触发。

    1. /** 
    2. * 在页面上写入高亮样式 
    3. */ 
    4. function createStyle() { 
    5.     if (document.getElementById('speak-light-style')) return; 
    6.  
    7.     var style = document.createElement('style'); 
    8.     style.id = 'speak-light-style'; 
    9.     style.innerText = '.' + splitConfig.hightlightCls + '{' + splitConfig.hightStyle + '}'; 
    10.     document.getElementsByTagName('head')[0].appendChild(style); 
    11. } 
    12. // 非正文须要朗读的标签 逗号分隔 
    13. var speakTags = 'a, p, span, h1, h2, h3, h4, h5, h6, img, input, button'; 
    14.  
    15. $(document).on('mouseenter.speak-help', speakTags, function (e) { 
    16.     var $target = $(e.target); 
    17.  
    18.     // 清除段落内的 
    19.     if ($target.parents('.' + splitConfig.wrapCls).length || $target.find('.' + splitConfig.wrapCls).length) { 
    20.         return; 
    21.     } 
    22.  
    23.     // 图片样式零丁处理 其他样式同一处理 
    24.     if (e.target.nodeName.toLowerCase() === 'img') { 
    25.         $target.css({ 
    26.             border: '2px solid #000' 
    27.         }); 
    28.     } else { 

        推荐阅读

        固态硬盘寿命短?平衡算法来续命

      开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散 硬件挖的坑真的可以经由过程软件来填吗?实际上不少硬>>>详细阅读


      本文标题:网页中文本朗读功能开发实现分享

      地址:http://www.17bianji.com/lsqh/39663.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)