未捕获的承诺Dom异常

时间:2018-12-23 15:59:03

标签: javascript jquery html5

每当我在音频上调用play方法时,都会收到Uncaught(保证)Dom Exception错误,这是屏幕截图, enter image description here

这就是我所做的

function NotificationComment(cat,place) {
  clearInterval(notify);
  var url = $("#notification").val();
  var val = $("#" + cat).val();
  $.get(url, {type: cat, prev: val}, function (data) {
    arrayData = JSON.parse(data);
    $('#'+place).html('  ' + arrayData.count + '  ');
    $("#"+cat).val(arrayData.count);
    if(arrayData.sound==1) {
      notify = setInterval(function () {
        $("#audio")[0].play();
        NotificationComment('G', 'commentNot');
      }, 2000);
    } else {
      notify = setInterval(function () {
        NotificationComment('G', 'commentNot');
      }, 2000);
    }
  });
}
if($("#auth").val()==1) {
  notify = setInterval(function () {
    NotificationComment('G', 'commentNot');
  }, 2000);
}

谢谢

2 个答案:

答案 0 :(得分:1)

由于@patrick Hund,我最终找到了一个解决方案,能够理解大多数浏览器会限制声音和视频的自动播放而导致诺言异常的事实,我通过创建一个隐藏并单击的按钮来解决了这一问题每当有新的通知出现时,这就是我的代码 Js

 function NotificationComment(cat,place){
       clearInterval(notify);
       var url = $("#notification").val();
       var val = $("#"+cat).val();
       $.get(url,{type:cat,prev:val},function (data) {
              arrayData = JSON.parse(data);
              $('#'+place).html('  '+arrayData.count+'  ');
              $("#"+cat).val(arrayData.count);
              if(arrayData.sound==1){
                  $("#player")[0].click();
                  notify = setInterval(function () {
                      NotificationComment('G','commentNot');
                  }, 2000);

              }else{
                  notify = setInterval(function () {
                      NotificationComment('G','commentNot');
                  }, 2000);
              }

       });
   }
if($("#auth").val()==1) {
        notify = setInterval(function () {
            NotificationComment('G','commentNot');
        }, 2000);
    }

HTML

<audio id="myAudio">
        <source  src="{{url('assets2/audio/definite.mp3')}}">
    </audio>
    <button id="player" onclick="play()">Play</button>
    <script>
        var x = document.getElementById('myAudio');
        function play() {
            x.play();
        }
    </script>

谢谢你们

答案 1 :(得分:0)

这些也是可行的解决方案,请转到chrome://flags/#autoplay-policy(适用于Chrome用户)并在那里激活自动播放设置或使用

audio=new Audio('audiosource');
audio.play();

在javascript中