HTML: аудиофайл не обновляется при перезагрузке

У меня есть аудиофайл sound.wav длиной 14 секунд. Когда пользователь нажимает кнопку, URL-адрес источника sound.wav изменяется, и 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  

Как видите, я перезагружаю аудиоэлемент html для sound.wav после того, как пользователь нажимает кнопку. Однако звуковой файл остается неизменным на веб-сайте, если я не нажму «Обновить».

Как я могу это исправить?

Где //code to reload the sound.wav? Это функция load()?

deEr. 15.05.2018 10:41

Вы намеренно меняете продолжительность? Или у вас разные wav файлы?

zer00ne 15.05.2018 10:51

Поскольку вы используете элемент <source>, вы должны вызвать метод <audio>.load() после того, как вы изменили src вашего источника.

Kaiido 15.05.2018 11:02

Это обман stackoverflow.com/questions/32168173/…, у которого нет ответа, за который проголосовали ...

Kaiido 15.05.2018 11:04
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
1 427
1

Ответы 1

Когда вы меняете src элемента <source>, он не меняет src его родительского элемента MediaElement (<audio> или <video>). Вы должны вызвать этот метод MediaElement .нагрузка():

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

load_btn.onclick = function() {
  audio.load(); // you must call this
  setTimeout(function(){console.info('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>

Другие вопросы по теме