這對我不起作用!任何人有同樣的問題?我的代碼看起來很簡單,但只有當我需要一遍又一遍地播放時纔會播放。看到如下:HTML5音頻不會播放多次
我的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");
};
};
定時播放聲音編程上的失效。只要它是私密的,它就可以工作。我不明白爲什麼它必須是私人的。
到目前爲止,它看起來像是如果我把代碼放在一個私人類的作品,但我會確認,然後在這裏發佈代碼。 – Gilson
私人課程似乎很穩定,適用於PC和MAC的Chrome。它不能在Android Chrome上運行,但它可以在Android Firefox上運行。看起來像是Android版的Chrome存在問題,或者我的代碼並不完美。我將通過USB進行調試。我剛剛發現,Chrome手機有一個USB調試功能,我會嘗試它。 – Gilson
好吧,我看到問題,但沒有解決方案。如果我用任何值調用audio.updateProgress;從定時器函數loadXMLDoc它的工作原理,但如果我從XMLHttpRequest上下文中調用audio.updateProgress它不工作在這種情況下它是隻讀的。我不知道如何解決Javascript中的線程上下文。 – Gilson