web-dev-qa-db-fra.com

Non attrapé dans la promesse Dom Exception

Chaque fois que j'appelle la méthode de lecture sur un fichier audio, l'erreur d'erreur d'exception Dom Uncaught (promis) est une capture d'écran,  enter image description here

et voici ce que j'ai fait

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);
}

Merci

3
spartyboy

J'ai fini par trouver une solution grâce à @patrick Hund, j'ai pu comprendre le fait que la plupart des navigateurs interdisent la lecture automatique des sons et des vidéos, ce qui entraîne une exception de promesse. la notification arrive ici est mon code 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>

Merci les gars

1
spartyboy

Ce sont aussi des solutions possibles. Allez à chrome: // flags/# autoplay-policy pour les utilisateurs de chrome et activez les paramètres de lecture automatique ou utilisez 

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

en javascript;

0
spartyboy