Javascript 如何在中成功更新HTML音频播放器源,然后在Chrome中运行
我正在建立一个无服务器的网站,后端Lambda函数之一是构造一个s3url,前端使用它来更新嵌入HTML中的音频播放器的源代码 由于前端必须等待Lambda函数完成并返回一个正常工作的URL,因此音频播放器的源将在函数中更新。然后函数:Javascript 如何在中成功更新HTML音频播放器源,然后在Chrome中运行,javascript,html,aws-lambda,Javascript,Html,Aws Lambda,我正在建立一个无服务器的网站,后端Lambda函数之一是构造一个s3url,前端使用它来更新嵌入HTML中的音频播放器的源代码 由于前端必须等待Lambda函数完成并返回一个正常工作的URL,因此音频播放器的源将在函数中更新。然后函数: var accessKey = getURLVars()["AccessKey"]; var audioPlayer = document.getElementById('audioURL'); // Handle when the user en
var accessKey = getURLVars()["AccessKey"];
var audioPlayer = document.getElementById('audioURL');
// Handle when the user enters a key into the form
function handleKey() {
var url = "";
fetch(apiBaseURL+"/getFileURL", {
method: "POST",
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
key: accessKey,
})
})
.then(function(response) {
return response.json();
})
.then(function(json) {
if (json.url === "not_found") {
// The file was not found
console.log("File not found");
.....
} else {
// The file was found, update the elements to the new URL
url = json.url;
console.log(url);
audioPlayer.src = url;
.....
}
});
}
音频播放器:
<audio controls>
<source id='audioURL' type="audio/mp3" src=""></source>
Your browser does not support this audio player.
</audio>
您的浏览器不支持此音频播放器。
lambda函数返回一个有效的url,检查Chrome中的audio元素表明其源已更新,但音频播放器将不播放。此外,音频播放器更新其源代码,可在Microsoft Edge中播放,但不能在Chrome中播放
我还需要做些什么才能让播放器在Chrome中工作,还是需要使用其他音频播放器?似乎当音频播放器的源代码更改时,Chrome不会重新加载音频播放器,因此,音频播放器必须在源代码更改后手动加载 “似乎当音频播放器的源代码发生变化时,Chrome不会重新加载音频播放器,因此,音频播放器必须在源代码发生变化后手动加载。” 每当音频或视频标记/对象更改src时,应调用该方法。
。。。
}否则{
//找到文件后,将元素更新为新URL
url=json.url;
console.log(url);
audioPlayer.src=url;
audioPlayer.load();//每当音频或视频标记/对象更改src时,都应调用.load()方法。
.....
}…
如果它在一个浏览器中播放,而不是在另一个浏览器中播放,则可能完全取决于音频文件是什么,以及它是否与您指定的预设mime类型匹配:。你试过其他浏览器吗?有任何控制台错误吗?我刚刚尝试了Chrome和Edge,但任何地方都没有控制台错误。但是,我相信我们发现了问题,Chrome似乎不会在源代码更改时自动重新加载音频播放器,至少在这种情况下不会。不需要手动加载,请参阅我的右侧,手动加载是指调用加载功能。对我来说仍然很奇怪的是,Chrome特别有这个问题,而且只有在这种利基环境下才有这个问题。我相信这是根据