23

我想知道如何让音频文件在所有页面上“连续”播放。因此,如果音频文件已经播放了 20 秒,那么当在另一个页面上导航时,它将从中断的地方继续。我也试图在离开主页后降低音量。我将不胜感激任何提示或建议!谢谢=D

<audio src="songforsite.mp3" loop="true" autoplay="true" controls>
Unsupported in Firefox
</audio>
4

3 回答 3

24

对的,这是可能的。尝试这个:

<audio preload="auto" src="a.mp3" loop="true" autobuffer>
Unsupported in Firefox
</audio>

<script>

function setCookie(c_name,value,exdays)
{
    var exdate=new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
    document.cookie=c_name + "=" + c_value;
}

function getCookie(c_name)
{
    var i,x,y,ARRcookies=document.cookie.split(";");
    for (i=0;i<ARRcookies.length;i++)
    {
      x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
      y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
      x=x.replace(/^\s+|\s+$/g,"");
      if (x==c_name)
        {
        return unescape(y);
        }
      }
}

var song = document.getElementsByTagName('audio')[0];
var played = false;
var tillPlayed = getCookie('timePlayed');
function update()
{
    if(!played){
        if(tillPlayed){
        song.currentTime = tillPlayed;
        song.play();
        played = true;
        }
        else {
                song.play();
                played = true;
        }
    }

    else {
    setCookie('timePlayed', song.currentTime);
    }
}
setInterval(update,1000);
</script>
于 2013-03-25T11:26:31.323 回答
15

如果您真的导航到另一个页面,那么您将无法获得真正的连续播放。

常见的方法有以下三种:

  • 在弹出窗口中打开您的音频播放器
  • 框架:一个用于显示页面的主框架,一个用于音频播放器的小框架
  • 不是真正导航到其他页面,而是使用 AJAX 执行所有操作,因此实际上不会重新加载页面,而只是动态更改文档结构的一部分;可能会添加真正的链接功能,包括使用 HTML5 History API 更改地址栏

所有方法都有其优点/缺点。Popup 可能是最容易实现的,并且缺点最少(与框架相比)。

我也试图在离开主页后降低音量。

然后捕捉任何点击您的“主页”链接/按钮,并调用参数值范围为 0 到 1volume的元素的方法来设置音量。audio

于 2013-03-25T10:46:35.957 回答
4

嗯 .. 一种干净整洁的方式,是 soundcloud.com 和 spoify.com 通过 ajaxifing 所有页面制作的方式

修复页面并通过 ajax 更改页面内容,并更改 url 以给用户导航的错觉这不是最简单或最快的解决方案,但它是最干净的..远离对浏览器不兼容的恐惧

于 2014-06-08T07:01:46.227 回答