2016-06-11 6 views
-1

У меня есть следующий код JavaScript:воспроизведение звукового файла на дисплее сНу

<script type="text/javascript"> 
/** 
* @param {string} filename without extension //chat sound 
*/ 
function playSound(filename){ 
    document.getElementById("sound").innerHTML='<audio autoplay="autoplay"><source src="' + filename + '.mp3" type="audio/mpeg" /><source src="' + filename + '.ogg" type="audio/ogg" /><embed hidden="true" autostart="true" loop="false" src="' + filename +'.mp3" /></audio>'; 
} 

</script> 

Код играет звуковой файл по нажатию кнопки, которая работает отлично.

<button onclick="playSound('inc/sound');">Play</button> 
<div id="sound"></div> 

У меня есть еще один DIV следующим образом:

<div id="acceptCallBox"> 
    <!-- Should be initially hidden --> 
    <div id="acceptCallLabel"></div> 
    <input type="button" id="callAcceptButton" value="Accept" /> 
    <input type="button" id="callRejectButton" value="Reject" /> 
</div> 

Она скрыта по умолчанию (дисплей: нет;). Мне нужно воспроизвести звук, когда отображается div. Как это возможно. Запрос справки ...

+0

Это зависит от того, когда отображается div. – instead

+0

Где именно вы вызываете '.play()' an, на каком элементе 'audio'? –

+0

Это функция function playSound и звуковой файл sound.ogg и sound.mp3. Щелчок кнопки работает нормально ... Но не Div display .. – user3790186

ответ

0

Вы можете проверить, если отображается <div>, а затем сказать аудиофайл, чтобы начать играть, как показано ниже:

var acceptCallLabel = document.getElementById("acceptCallLabel"); 
var audio = document.getElementsByTagName("audio")[0]; 

if (acceptCallLabel.style.display != "none") { 
    audio.play(); /* Make the audio start playing */ 
} 
+0

#Angel Politis Не работает. – user3790186

+0

Вы даже заставляли div появляться после какого-то события? –

+0

Не с той же страницы. Нажатие кнопки на другой странице отображает div на текущей странице ... Чат-запрос ... – user3790186

0

Вы открыты для использования JQuery в качестве альтернативы вашего подхода? Вот пример:

<a class="hiddensounddivclick" data-box="#hiddensounddiv" href="#">Click this to show div and play sound</a>  

<div class="hiddensound" data-sound="alert" id="hiddensounddiv"> 
    HIDDEN DIV 
</div> 


<!-- START PRELOADS --> 
<audio id="audio-alert" src="audio/alert.mp3" preload="auto"></audio> 
<!-- END PRELOADS --> 



<script> 
    /* PLAY SOUND FUNCTION */ 
    function playAudio(file){ 
     if(file === 'alert') 
      document.getElementById('audio-alert').play(); 

    } 
    /* END PLAY SOUND FUNCTION */ 


     jQuery(".hiddensounddivclick").on("click",function(){ 
      var box = $($(this).data("box")); 
      if(box.length > 0){ 
       box.toggleClass("open"); 

       var sound = box.data("sound"); 

       if(sound === 'alert') 
        playAudio('alert'); 


      }   
      return false; 
     }); 
</script> 

<style> 
.hiddensound { 
    display: none; 
} 

.hiddensound.open { 
    display: block; 
} 
</style> 

Fiddle: https://jsfiddle.net/wdp286q3/5/

Вам просто нужно будет установить аудио SRC на то, что он находится в директории.

+0

Извините ... Я новичок в javascript и не знаю, как адаптировать это к моему требованию. – user3790186

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