HTML5音频标签-更改源不自动播放

HTML5音频标签-更改源不自动播放,html,audio,Html,Audio,我正在尝试更改当前播放的音频源。但它不是在播放这首歌。调用audio.load()后,将发送资源的GET请求,这将导致HTTP 200 OK。在调用audio.play()之前,我尝试了间隔2秒的设置,但这也不能解决我的问题。控制台没有给出任何错误消息 <audio id="audioPlayer" controls="controls" autoplay> <source id="audioSource" src="audio/myFirstSong.mp3" typ

我正在尝试更改当前播放的音频源。但它不是在播放这首歌。调用
audio.load()
后,将发送资源的GET请求,这将导致
HTTP 200 OK
。在调用
audio.play()
之前,我尝试了间隔2秒的设置,但这也不能解决我的问题。控制台没有给出任何错误消息

<audio id="audioPlayer" controls="controls" autoplay>
    <source id="audioSource" src="audio/myFirstSong.mp3" type="audio/mpeg" />
</audio>



function updateSource(songName) {
    songName = "audio/" + escape(songName) + ".mp3";
    var audio = document.getElementById('audioPlayer');

    var source = document.getElementById('audioSource');
    source.src = songName;

    audio.load();//GET 200 OK
    audio.play(); //Doesn't play
    //Can't press the Play button in the controls either
}

函数更新资源(songName){
songName=“audio/”+转义(songName)+“.mp3”;
var audio=document.getElementById('audioPlayer');
var source=document.getElementById('audioSource');
source.src=songName;
audio.load();//获取200确定
audio.play();//不播放
//也不能按控件中的播放按钮
}

我没有对原始代码做太多更改:

  • controls=“controls”
    controls

  • 音频源已更改

  • 添加了一个按钮和一个事件侦听器来调用
    updateSource()
    函数

我真的不明白为什么我的演示和你的有那么大的不同


更新
函数更新资源(songName){
歌曲名=”https://glpjt.s3.amazonaws.com/so/av/“+escape(歌曲名)+.mp3”;
var audio=document.getElementById('audioPlayer');
var source=document.getElementById('audioSource');
source.src=songName;
audio.load();//获取200确定
audio.play();//不播放
//也不能按控件中的播放按钮
}
var btn1=document.getElementById('btn1');
btn1.addEventListener('click',函数(e){
var songName=“pf正义”;
更新资源(歌曲名称);
},假);

您是否尝试过直接播放url?如果只使用
controls
控件,则
controls=“controls”
更稳定。是的,在浏览URL时会播放音频文件。它也可以在windows media player中播放。嗯,将它改为songName=“”+escape(songName)+“.mp3”,对我来说仍然不起作用。您的代码段运行得很好。我所做的更改不应该在功能上造成太大的差异……令人困惑。@Reinard通过严格检查您的代码,我唯一想说的是您的问题是您还没有调用
updateSource()
。尝试在函数声明后添加
updateSource(songName)
。我将mp3文件放在web服务器上,现在就可以使用了。我猜问题出在VisualStudio/IIS express上:是的,VS是一个过于复杂的IDE。我从来没有进入C++,因为我害怕使用VS在校园实验室。