gpt4 book ai didi

javascript - HTML5 音频播放不超过一次

转载 作者:搜寻专家 更新时间:2023-11-01 04:42:04 25 4
gpt4 key购买 nike

这对我不起作用!有人有同样的问题吗?我的代码看起来很简单,但它只会在我需要能够一遍又一遍地播放时播放。见下图:

我的 HTML:

<audio id="siren" src="sounds/400.ogg" preload="auto">

和我的 JS:

function play_siren() {
log("play sound");
if(document.getElementById('siren').paused == true){
document.getElementById('siren').play();
}
}
function pause_siren() {

try{
if(document.getElementById('siren').paused == false){
document.getElementById('siren').pause();
}
log("paused siren");
}catch(err){
log(err.message);
}
try{
if(document.getElementById('siren').currentTime > 0.0){
document.getElementById('siren').currentTime = 0.0;
}
log("reset siren");
}catch(err){
log(err.message);
}
}

它是在 JS 代码中以编程方式启动的,如下所示:

if(Obj[3].siren == true && isPlayingSiren == false){
play_siren();
isPlayingSiren = true;
}else if(Obj[3].siren == false && isPlayingSiren == true){
pause_siren();
isPlayingSiren = false;
}

我找到了这位先生的代码,他的 DOES 似乎有效:http://html5.komplett.cc/code/chap_video/js_audioPlayer_en.html

但是设置“currentTime = 0”对我没有任何作用。

我想不通。我用 Chrome、Firefox 和 Safari 进行了测试。到目前为止,Firefox 根本无法运行 Chrome 似乎是 HTML5 的最佳选择,但我仍然只能玩一次。

我什至尝试过 mp3 和 ogg 相同的行为。

请说明一下。谢谢!

这是完整的 HTML:

<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" media="all" href="js_audioPlayer.css">
<title>HTMLMediaElement example - Audio Player</title>
<script src="../js/audioPlayer.js"></script>
</head>
<body>
<fieldset>
<audio src="sounds/400.ogg" preload="auto"></audio>
<legend>Audio Player (400)</legend>
</fieldset>

<script>
function loadXMLDoc(){
_pause();
updateProgress(0);
playPause();
}

var loadXmlTimer = setInterval(loadXMLDoc, 2000);
</script>
</body>
</html>

这是完整的 javascript:

// global callback functions
var playPause, updateProgress, _play, _pause;

/* initialize audio player */
window.onload = function() {
// keep track of playback status
var AudioStatus = {
isPlaying : false
};

// define references to audio, pulldown menu, play-button, slider and time display
var audio = document.querySelector("AUDIO");

/* load track by menu-index */
var loadTrack = function(idx) {
audio.src = '../sounds/400.ogg';
audio.load();
};

/* callback to play or pause */
_play = function() {
audio.play();
log("play");
AudioStatus.isPlaying = true;
};

_pause = function() {
audio.pause();
log("pause");
AudioStatus.isPlaying = false;
};

playPause = function() {
if (audio.paused) {
_play();
}
else {
_pause();
}
};

/* callback to set or update playback position */
updateProgress = function(value) {

audio.currentTime = value;
log("updateProgress");
};

};

计时器在到期时以编程方式播放声音。只要它是私有(private)的,它就可以工作。我不明白为什么它必须是私有(private)的。

最佳答案

它是否通过 if 语句传递?

您可以使用 ontimeupdate 将 document.getElementById('siren').currentTime 的值放入变量中。如果设置为大于 0,则可以在 if 条件下更新它。

关于javascript - HTML5 音频播放不超过一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17664181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com