如何防止损坏的音频src在控制台中打印错误信息?

时间:2018-05-18 05:14:19

标签: javascript

我有一个网页,用户点击按钮,音频开始播放。

<button onclick="playAudio()">Play</button>

但是如果源URL不正确,则会在控制台中打印:

  

未捕获(在承诺中)NotSupportedError:无法加载,因为未找到支持的来源

var myAudio = new Audio();
myAudio.src = "myAudioSrc (incorrect url)";

function playAudio(){
    myAudio.play();
    //prints error
}

如果源网址不正确,如何在控制台中阻止此错误消息?

2 个答案:

答案 0 :(得分:4)

当您拨打.play()时,会产生错误,而不是在您指定无效的src时。要禁止它,如错误所示,您需要catch .play()返回的承诺所引发的错误:

&#13;
&#13;
var myAudio = new Audio();
myAudio.src = "myAudioSrc (incorrect url)";
console.log('src has been assigned');
myAudio.play()
  .catch(() => void 0);
&#13;
&#13;
&#13;

因为嵌入式代码段无论如何都不会显示错误,所以这里有一个关于JSFiddle的例子来说明差异:https://jsfiddle.net/smjy5b9u/

答案 1 :(得分:2)

您可以简单地catch返回的承诺(如果有的话),即使此消息是IMM Chrome的实施过于冗长。

var p = new Audio('foo').play();
// check we actually have a Promise (older browser may not return this)
if(p)
  p.catch(function(e){/*silent*/});