首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网页中的内容说明,如果当前任务(说话内容)未完成,则在tab键上不会说话

网页中的内容说明,如果当前任务(说话内容)未完成,则在tab键上不会说话
EN

Stack Overflow用户
提问于 2017-04-03 12:35:07
回答 1查看 74关注 0票数 0

我正在使用articulate.js(http://www.jqueryscript.net/demo/Lightweight-jQuery-Based-Text-To-Speech-Engine-Articulate-js/)从页面中读取内容并将其朗读。它工作得很好,但如果它正在说什么,并且我按了tab,那么它就会停止,但不会读取tab选择的内容。一些预定义函数

代码语言:javascript
复制
<script>
function speak(obj) {
  $(obj).articulate('speak');
};

function pause() {
  $().articulate('pause');
};

function resume() {
  $().articulate('resume');
};

function stop() {
  $().articulate('stop');
};
</script>

我尝试过的东西

代码语言:javascript
复制
<script>
  $(document).ready(function() {
    var counter = 0;
    setTimeout(function(){
      counter +=1;
      if (counter == 1){
        explode();
      }
    },1000);
    function explode(){
      //$('body').articulate('speak'); // Default for play whole content
      $('h1').articulate('speak');
    }

    $('body').keyup(function (e) {
    $().articulate('stop');
      if (e.which == 9) { // on tab press start speaking selected element
        var i=document.activeElement.id;
        $('#'+i).articulate('pause').articulate('stop').articulate('speak');
      }
      else{ // trying to speak what key has been pressed except tab, but not working
          var i=document.activeElement.id;
          $('#'+i).val().articulate('speak');
      }
    });

  });
</script>

我也在试着在文本框上让它听得见(说话按键),这不起作用

EN

回答 1

Stack Overflow用户

发布于 2017-04-03 16:05:29

我已经做了一些更改,现在它是工作的,但它有一定的限制,如它不读取退格键,ctrl,空格等,但说a到z,1到0,非常好。请改进一下

代码语言:javascript
复制
<script>
  $(document).ready(function() {
    var counter = 0;
    setTimeout(function(){
      counter +=1;
      if (counter == 1){
        explode();
      }
    },1000);
    function explode(){
      //$('body').articulate('speak'); // Default for play whole content
      $('h1').articulate('speak');
    }

    $('body').keyup(function (e) {
        var speaking = $().articulate('isSpeaking');
        var paused = $().articulate('isPaused');
//  $().articulate('stop');
      if (e.which == 9) {
          if (speaking) {
              $().articulate('pause');
              $().articulate('stop');
          }

          var check =0;
          setTimeout(function(){
              check +=1;
              if (check == 1){
                  comeback();
              }
          },1000);
          function comeback() {
              var i=document.activeElement.id;
              $('#'+i).articulate('speak');

          }
      }
      else{
          var i=document.activeElement.id;
          var m=0;
          setTimeout(function () {
              m+=1;
              if(m==1){
                  magic();
              }
          },500);
          function magic() {
              var tempval=$('#'+i).val();
              var lastChar = tempval.substr(tempval.length - 1);
              var ht ='<div>'+lastChar+'</div>';
              $(ht).articulate('speak');
          }
      }
    });

  });
</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43176545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档