2

.swf在我的站点中使用了一个音频 ( ) 文件,它有两个选项:AUDIO ON 和 AUDIO OFF。我可以打开和关闭音频。问题是音频没有停止。它在反复播放。谁能帮我?

另一个问题是,每当我重新加载任何页面时,音频文件都会从头开始播放。我希望从先前停止音频的位置播放它。

编辑:从评论中添加代码

<audio id="main_audio" <?php echo $autoplaynf;?> preload="auto" loop="loop"> 
   <embed hidden="true" autostart="true" loop="true" src="audio.mp3" /> 
</audio>
4

1 回答 1

1

当您刷新页面时,您的音频将从头开始。如果你真的需要从你离开的地方开始,你必须将播放位置存储在 cookie 中。也可以通过将位置存储在服务器上来完成,但如果在缓存整个音频文件时连接丢失,它将无法工作。

  1. 使用timeupdate音频标签中的事件将让您知道当前播放位置何时发生变化。这个播放位置应该改变
  2. 使用 cookie 存储播放位置。如果您使用不同的音频文件,您也可以将音频文件名与 cookie 一起存储,以便区分音频文件是否已更改。
  3. 当页面加载完毕且存在特定音频文件的 cookie 时,从 cookie 中的播放位置开始,否则从头开始。

前提是您有以下代码:

<audio id="main_audio" <?php echo $autoplaynf;?> preload="auto" loop="loop"> 
   <embed hidden="true" autostart="true" loop="true" src="audio.mp3" /> 
</audio>

您可以添加 javascript(不确定您是否使用 jQuery)来执行上述操作。请注意,这必须仅在加载音频标签后执行。请注意,这只是伪代码。尝试将其用作完成工作的指南。

// when page is loaded do the following actions
var atag = document.getElementById("main_audio");
atag.addEventListener("timeupdate", timeUpdateEvent, false);

// check if coockie exists
var timePos = readCookie();
atag.currentPos = timePos;

function timeUpdateEvent(event) {
    // get time position from audio tag
    // store cookie
}

function readCookie() {
    // read the cookie and return time value
    // of cookie does not exist return a timevalue
    // that will let the audio start from the beginning
}

对于存储、读取和删除 cookie,我参考了这个答案。可能还有更多的例子。

于 2013-06-14T06:20:51.490 回答