[英]Can't load audio file in javascript
Here is my code for load and play audio file . 这是我用于加载和播放音频文件的代码。
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>Test audio</title>
</head>
<body>
<script type="text/javascript">
window.onload = function() {
var audio = new Audio("../../data/audio/background.ogg");
audio.preload = "auto";
audio.addEventListener('ended', function() {
alert('ended');
}, false);
audio.addEventListener('canplaythrough', function() {
audio.loop = true;
audio.play();
}, false);
audio.onerror = function(event) {
console.log(event.code);
}
audio.load();
}
</script>
</body>
</html>
But I can't run it on Chrome (Firefox or IE 9 are oke) because when load audio file, I always get the error 但是我无法在Chrome上运行它(Firefox或IE 9都可以使用),因为加载音频文件时,我总是会收到错误消息
How can I fix my code ? 如何修复我的代码?
On Desktop Chrome you can do this automatically just in HTML without any Javascript. 在桌面版Chrome上,您可以仅使用HTML而无需任何Javascript来自动执行此操作。
<audio autoplay>
<source src="test.ogg" type="audio/ogg">
<source src="test.mp3" type="audio/mpeg">
Sorry, no Audio support
</audio>
Your code in general should work. 您的代码通常应该可以工作。 I just put it into http://jsbin.com/usific/1 and added my own audio file and I can see it downloading the entire file, it looks like your server is not accepting the request, or you have put in an incorrect URL. 我只是将其放入http://jsbin.com/usific/1,并添加了自己的音频文件,可以看到它正在下载整个文件,看起来您的服务器未接受请求,或者您输入了不正确的文件网址。
This works for me: 这对我有用:
var audioElement;
audioElement = new Audio("");
audioElement.addEventListener('ended', function() {
this.currentTime = 0;
this.play();
}, false);
document.body.appendChild(audioElement);
audioElement.src = '../../data/audio/background.ogg';
audioElement.id = "audioElement";
audioElement.addEventListener('canplaythrough', function() {
audioElement.play();
}, false);
audioElement.addEventListener('ended', function() {
alert('ended');
}, false);
audioElement.onerror = function(event) {
console.log(event.code);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.