2017-12-27 241 views
0

我想打一個音頻文件,到目前爲止,我能夠通過做到這一點:的Javascript:如何加載更新的音頻文件並進行播放

a = new Audio("audio.mp3"); 
a.load(); 
a.play(); 

但是玩它什麼,我試圖做後是我正在創建具有相同名稱的新音頻文件。現在再次單擊一個按鈕並運行此功能播放音頻時,它將播放以前的文件輸出而不是新的文件。所以我如何重新上傳同名的同一個文件,以便生成新的音頻。

感謝

+0

音頻文件可能緩存,所以當你再次加載它,它會使用緩存版本。刷新頁面或強制它再次下載。 –

回答

1

你不斷收到,因爲瀏覽器高速緩存中相同的音頻文件,因爲它是在瀏覽器假定這兩個文件是相同的同一名稱的原因。爲防止出現這種情況,您可以在文件名後附加一個隨機查詢字符串,以便瀏覽器認爲您每次都有一個新文件。但是這樣做的缺點是您的用戶每次都必須下載音頻文件,這可能會減慢用戶的加載時間。

a = new Audio("audio.mp3?random=" + new Date().getTime()); 
a.load(); 
a.play(); 

如果你有機會獲得上傳的時間可以追加該日期時間,而不是一個隨機的日期時間,至少是強制瀏覽器每次上傳下載的文件只有一次。

a = new Audio("audio.mp3?random=" + uploadDate.getTime()); 
a.load(); 
a.play(); 
0

如果要加載具有相同名稱的另一個文件(甚至可能是另一個名稱,在同一個對象中),則需要刪除先前的對象! a.remove()將這樣的伎倆:

a = new Audio('a.mp3'); 
    a.load(); 
    a.play(); 
    setTimeout(function(){a.pause();a.remove();a.load('a.mp3');a.play();},10000); 

上面的代碼加載a.mp3發揮並保持10秒鐘。 10秒後,它再次加載a.mp3,以查看該文件中的內容。

你需要足夠快,以取代具有相同名稱的音頻文件,在10秒:d(或只是提高超時秒)