2017-02-15 8 views
0

У меня есть следующий код:остановить аудио петля Javascript

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

Кредиты: Лоренса Суорт

код прекрасно работает, однако, звук зацикливается. Есть ли способ сделать воспроизведение звука только один раз?

+0

Используйте 'SetTimeout()' вместо 'setInterval ' – azs06

+0

У меня могут возникнуть проблемы с властями моей страны-хостинга, помогая вам, поэтому это останется как комментарий, но если цель состоит в том, чтобы проверить, когда один элемент с« Update »в нем был добавлен в документ, и играть звук в этот момент, то вы t o знать, что 'setInterval' возвращает идентификатор, который будет использоваться с методом [' clearInterval'] (https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearInterval), когда ваша проверка проходит. Если вы ожидаете нескольких таких событий, измените '> 0' на'> current' и увеличивайте 'current' на каждом новом положительном событии. – Kaiido

+0

@ Kim Jong-un, как только вы прибиваете это ... если вы это сделаете ... отправьте ответ, чтобы помочь следующему человеку ... добро пожаловать в SO –

ответ

0

Вы используете 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); 
+0

Это было хорошим решением, однако, когда на сайте появилось новое обновление , сценарий больше не может перевернуть звук, потому что он уже играл. Я думаю, что мне нужен слушатель. Спасибо за вашу помощь. –

0

Вы должны удалить вы setinterval играть аудио раз и добавить атрибут петли аудио ложного

попробовать это:

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); 
+0

Я сделал, но, к сожалению, он не работал. Thx в любом случае. –

+0

Если я прокомментирую эти строки, сценарий не будет выполнен. –

 Смежные вопросы

  • Нет связанных вопросов^_^