Javascript HTML只播放一次声音,但更奇怪的事情发生了
Javascript HTML play sound only once, but more strange thing happened
我在 codepen 中尝试了这个简单的片段。和函数 once1 可以播放任意多次,而 once2 只能播放一次声音。
有人知道有什么区别吗?
var simple = new
Audio("http://s3.amazonaws.com/freecodecamp/simonSound1.mp3" );
var birdSound = new
Audio('http://www.noiseaddicts.com/samples_1w72b820/4929.mp3');
birdSound.loop = false;
simple.loop = false;
function once1(){
birdSound.play();
};
function once2(){
simple.play();
};
更新:使用load()
方法,按照其他发帖者的建议,我可以得到下面的代码来重复播放Chrome中的第二个声音,但听起来还是不一样在火狐中。在 Firefox 中,声音播放流畅,但在 Chrome 中,声音结束得更突然,有一点噼啪声或咔哒声。我怀疑这个特定的声音文件与 Chrome.
不完全兼容
我可以使用这里的 Plunker 在 Firefox 中让两种声音播放任意次数,但在 Chrome 中不行:http://plnkr.co/edit/gM8lobVoQoAtVSlwVZNC?p=preview
function init() {
var simple = new Audio("http://s3.amazonaws.com/freecodecamp/simonSound1.mp3" );
var birdSound = new Audio('http://www.noiseaddicts.com/samples_1w72b820/4929.mp3');
birdSound.loop = false;
simple.loop = false;
function once1() {
birdSound.play();
}
function once2() {
simple.load();
simple.play();
}
var btn1 = document.getElementById("one");
btn1.addEventListener('click', once1);
var btn2 = document.getElementById("two");
btn2.addEventListener('click', once2);
}
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css">
<script src="script.js"></script>
</head>
<body onload="init()">
<button id="one">Sound 1</button><br>
<button id="two">Sound 2</button>
</body>
</html>
您使用的是哪个网络浏览器?
给你,我看到另一个答案在 jsfiddle 或 codepen 上仍然不起作用,所以试试这个!
var simple = new
Audio("http://s3.amazonaws.com/freecodecamp/simonSound1.mp3" );
var birdSound = new
Audio('http://www.noiseaddicts.com/samples_1w72b820/4929.mp3');
birdSound.loop = false;
simple.loop = false;
function once1(){
birdSound.load();
birdSound.play();
};
function once2(){
simple.load();
simple.play();
};
只需使用 .load
:D
我在 codepen 中尝试了这个简单的片段。和函数 once1 可以播放任意多次,而 once2 只能播放一次声音。 有人知道有什么区别吗?
var simple = new
Audio("http://s3.amazonaws.com/freecodecamp/simonSound1.mp3" );
var birdSound = new
Audio('http://www.noiseaddicts.com/samples_1w72b820/4929.mp3');
birdSound.loop = false;
simple.loop = false;
function once1(){
birdSound.play();
};
function once2(){
simple.play();
};
更新:使用load()
方法,按照其他发帖者的建议,我可以得到下面的代码来重复播放Chrome中的第二个声音,但听起来还是不一样在火狐中。在 Firefox 中,声音播放流畅,但在 Chrome 中,声音结束得更突然,有一点噼啪声或咔哒声。我怀疑这个特定的声音文件与 Chrome.
我可以使用这里的 Plunker 在 Firefox 中让两种声音播放任意次数,但在 Chrome 中不行:http://plnkr.co/edit/gM8lobVoQoAtVSlwVZNC?p=preview
function init() {
var simple = new Audio("http://s3.amazonaws.com/freecodecamp/simonSound1.mp3" );
var birdSound = new Audio('http://www.noiseaddicts.com/samples_1w72b820/4929.mp3');
birdSound.loop = false;
simple.loop = false;
function once1() {
birdSound.play();
}
function once2() {
simple.load();
simple.play();
}
var btn1 = document.getElementById("one");
btn1.addEventListener('click', once1);
var btn2 = document.getElementById("two");
btn2.addEventListener('click', once2);
}
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css">
<script src="script.js"></script>
</head>
<body onload="init()">
<button id="one">Sound 1</button><br>
<button id="two">Sound 2</button>
</body>
</html>
您使用的是哪个网络浏览器?
给你,我看到另一个答案在 jsfiddle 或 codepen 上仍然不起作用,所以试试这个!
var simple = new
Audio("http://s3.amazonaws.com/freecodecamp/simonSound1.mp3" );
var birdSound = new
Audio('http://www.noiseaddicts.com/samples_1w72b820/4929.mp3');
birdSound.loop = false;
simple.loop = false;
function once1(){
birdSound.load();
birdSound.play();
};
function once2(){
simple.load();
simple.play();
};
只需使用 .load
:D