当新歌加载相同名称时,Jquery播放旧歌

时间:2015-08-28 09:53:22

标签: javascript jquery audio

我正在努力解决这个问题。

我正在将音乐上传到我们的服务器,效果很好。当我播放这首歌时,它会播放并停止播放。

但是当我上传一首同名的新歌时,我直接从服务器播放这首歌,我可以听到它是新歌,但是当我用jQuery播放这首歌时,它仍然会播放旧歌。

我的音乐代码如下:

HTML

<span id="toggle_<?= $number; ?>_music"  class="badge play_music" style="background-color: green; cursor: pointer;" onclick="sadsc_play_entry_music('<?= $number; ?>')">
    <audio id="entry_<?= $entry['location_entry_id']; ?>_music">
        <source src="comps/sadsc/music/<?= $location; ?>/<?= $number; ?>.<?= $extention; ?>" />
    </audio>
</span>

JS

function sadsc_play_entry_music(entry_id)
{
    file = "#entry_"+entry_id+"_music";

    var player = $(file)[0];

    if (!player.paused)
    {
        player.pause();  
        player.currentTime = 0;
        $('#toggle_'+entry_id+'_music').css('background-color', 'green');
        $('#toggle_'+entry_id+'_music i').removeClass('fa-stop').addClass('fa-play');   
    }
    else
    {
        all_audio = $('audio');

        all_audio.each(function( index ) {
            all_audio[index].pause();  
            all_audio[index].currentTime = 0;
        });

        $('.play_music').css('background-color', 'green');
        $('.play_music i').removeClass('fa-stop').addClass('fa-play');  

        player.play();     
        $('#toggle_'+entry_id+'_music').css('background-color', 'orange');
        $('#toggle_'+entry_id+'_music i').removeClass('fa-play').addClass('fa-stop');    
    }
}

我试过了

player.load();

重新加载文件,但没有做任何事。

提前完成

1 个答案:

答案 0 :(得分:1)

问题来自浏览器缓存,因为网址没有更改,所以不会再次下载文件。

强制浏览器下载新文件的常用方法是将唯一的随机数作为GET参数添加到网址

使用javascript你可以这样做:

var url = "http://example.com/mymusicfile?r="+(+new Date);