如何在浏览器重新加载和播放上一个端点的音频之前为音频播放器的最后一个终点(时间)设置cookie(jquery cookie插件)?

时间:2015-07-06 12:36:49

标签: javascript jquery audio cookies

我想在每个页面加载后从最后一个点播放音乐。如何在浏览器重新加载和播放上一个结束点的音频之前为音频播放器的最后一个终点(时间)设置cookie(jquery cookie plugin)?不适用于IE8和9。

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

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);

2 个答案:

答案 0 :(得分:0)

$(window).unload(function() {
    setCookie('timePlayed', song.currentTime);
});

如果您希望在浏览器重新加载或导航离开时执行最后一些逻辑操作,则需要向窗口添加卸载事件;

如果您还想了解如何访问Cookie并对其进行修改,请参阅此链接的回答Cookie editing

答案 1 :(得分:0)

<body onbeforeunload="return setCookie()">

function setCookie(){
   setCookie('timePlayed', song.currentTime);
}

你可以在卸载事件之前使用