javascript - HTML:重新加载时音频文件未更新

标签 javascript html audio

我有一个名为sound.wav的音频文件,该文件长14秒。当用户单击按钮时,sound.wav源url会更改,并且sound.wav会重新加载,现在为7秒。
但是,我的浏览器没有显示更改。仅在单击刷新按钮后,它才会显示更改。

这是我的代码:

  <div id="audioContainer">
    <audio id ="myAudio" controls>
      <source id = "wav_src" src="http://localhost:3000/sounds/sound.wav" type="audio/wav">
    </audio>
  </div>
//user clicks button... sound.wav's url source is changed
  document.getElementById("myAudio").load();   //code to reload the sound.wav  

如您所见,用户按下按钮后,我将重新加载sound.wav的html音频元素。但是,除非我单击刷新,否则声音文件在网站上保持不变。

我该如何解决?

最佳答案

更改src元素的<source>时,它不会更改其父MediaElement(src<audio>)的<video>。您必须调用此MediaElement的.load()方法:

set_src.onclick = function() {
  source.src = 'http://cdn.music2ten.com/mp3/pd4u/GershwinWhiteman-RhapsodyInBluePart1.mp3';
  console.log('source src:', source.src);
  setTimeout(function(){console.log('audio src:', audio.currentSrc)});
}

load_btn.onclick = function() {
  audio.load(); // you must call this
  setTimeout(function(){console.log('audio src:', audio.currentSrc)});
};
<audio id="audio" controls="controls">
  <source id="source">
</audio>
<br>
<button id="set_src">set src</button>
<button id="load_btn">load</button>


当然,您通常会一次性执行此操作:

set_src.onclick = function() {
  source.src = 'http://cdn.music2ten.com/mp3/pd4u/GershwinWhiteman-RhapsodyInBluePart1.mp3';
  audio.load(); // you must call this
}
<audio id="audio" controls="controls">
  <source id="source">
</audio>
<br>
<button id="set_src">set src</button>

关于javascript - HTML:重新加载时音频文件未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50345753/

相关文章:

javascript - 更改内容后提醒整个 div

javascript - 使用 jQuery 附加一个特殊字符不起作用

ios - 在 UITableView 滚动时播放滴答声(有点像 UIPickerView)

使用 channel 数 3 的 Linux ALSA 驱动程序

html - 显示来自 html5 音频流的当前歌曲信息(在 Meteor 应用程序中)

javascript - 重新排列对象中每隔两个键

javascript - 当层重叠时,悬停对象在背景/前景元素上出现两次

javascript - onclick改变div的背景

java - 为网站中的唯一用户生成唯一 URL

html - 在同一基线上对齐不同的字体大小