【问题标题】:Stop audio loop Javascript停止音频循环 Javascript
【发布时间】:2017-02-15 11:25:56
【问题描述】:

我有以下代码:

   var player = document.createElement('audio');
player.src = 'https://dl.dropbox.com/u/7079101/coin.mp3';
player.preload = 'auto';

   var url= 'http://www.businessdictionary.com/definition/update.html';

window.setInterval(function(){
  if($("*:contains(Update')").length > 0){
    console.log('New Update, playing sound...');
    player.play();
  }
}, 5000);

致谢:劳伦斯·斯沃特

代码运行良好,但音频会一直循环播放。有没有办法让音频只播放一次?

【问题讨论】:

  • 使用setTimeout() 而不是setInterval
  • 通过帮助您,我可能对我所在国家/地区的当局有一些问题,所以这将作为评论保留,但如果目标是检查一个包含 Update 的元素何时添加到文档中,并在此时播放声音,那么您就知道setInterval 确实返回一个id,当您的检查通过时,它与clearInterval 方法一起使用。如果您正在等待多个此类事件,请将 > 0 更改为 > current 并在每个新的积极事件时增加 current
  • @Kim Jong-un 一旦你确定了这个......如果你这样做了......发布一个答案来帮助下一个人......欢迎来到 SO

标签: javascript jquery loops audio


【解决方案1】:

您正在使用window.setInterval 这将永远重复调用player.play(),直到您调用clearInterval()

如果您希望播放器只播放一次,我建议您改用window.setTimeout

var player = document.createElement('audio');
player.src = 'https://dl.dropbox.com/u/7079101/coin.mp3';
player.preload = 'auto';

   var url= 'http://www.businessdictionary.com/definition/update.html';

window.setTimeout(function(){
  if($("*:contains(Update')").length > 0){
    console.log('New Update, playing sound...');
    player.play();
  }
}, 5000);

【讨论】:

  • 这是一个很好的解决方案,但是,当网站上出现新的更新时,脚本无法再触发音频,因为它已经播放过了。我认为我需要的是一个倾听者。感谢您的帮助。
【解决方案2】:

您需要删除 setinterval 才能播放一次音频 并将音频的循环属性添加为false

试试这个:

var player = document.createElement('audio');
player.src = 'https://dl.dropbox.com/u/7079101/coin.mp3';
player.preload = 'auto';
player.loop = false;
var url = 'http://www.businessdictionary.com/definition/update.html';

// window.setInterval(function () {
        if ($("*:contains(Update')").length > 0) {
            console.log('New Update, playing sound...');
            player.play();
        }
// }, 5000);

【讨论】:

  • 如果我注释这些行脚本不会执行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-05
  • 2019-01-25
  • 1970-01-01
相关资源
最近更新 更多