2015-01-28 4 views
1

У меня есть список песен, которые я хочу воспроизвести, когда пользователь нажимает кнопку, но кажется, что все песни пытаются загрузить одновременно, поэтому для загрузки требуется некоторое время. Если я оставлю страницу открытой в течение примерно 5 минут, музыка, наконец, будет играть, но я бы хотел, чтобы она не приходила ждать 5 минут. Так есть ли способ заставить SONG1 полностью загрузить сам по себе, то есть Song2 нагрузка сама по себе, и т.д.preload html5 audio in

Jquery:

$(document).ready(function(){ 
    var x = $(".audio-player").length; 
    var z = 0; 

    $("#play").click(function(){ 
     $(".audio-player")[z].play(); 
    }); 
    $("#pause").click(function(){ 
     $(".audio-player")[z].pause(); 
    }); 
    $("#skip").click(function(){ 
     $(".audio-player")[z].pause(); 
     z++; 
     if (z >= x) z = 0; 
     $(".audio-player")[z].play(); 
     $(".audio-player")[z].currentTime = 0; 
    }); 
}); 

HTML

<p id="play">Play</p> 
<p id="pause">Pause</p> 
<p id="skip">Next</p> 

<audio class="audio-player" src="https://dl.dropboxusercontent.com/u/64455636/tumblr/music/1/Apollo.mp3"></audio> 
<audio class="audio-player" src="https://dl.dropboxusercontent.com/u/64455636/tumblr/music/1/Daydreamer.mp3"></audio> 
<audio class="audio-player" src="https://dl.dropboxusercontent.com/u/64455636/tumblr/music/1/Delayed%20Friend%20Request.mp3"></audio> 

JSfiddle

+0

Там всегда атрибут преднагрузки: HTTP: //www.w3schools .com/tags/att_audio_preload.asp Я не уверен, как вы могли заставить браузер только предварительно загружать один файл в то время. – ReLeaf

+0

@ReLeaf Я попытался использовать теги preload, но они не работают, как я хочу – Jaketr00

ответ

2

Вам нужно всего лишь 1 звукозапись, а не 3. Вы можете также динамически загружать звук из массива, когда пользователь нажимает на воспроизведение, поэтому вам не нужно загружать звук при загрузке страницы.

Я обновил свою скрипку здесь, чтобы показать вам, что это работает: http://jsfiddle.net/g8vduvaf/6/

Вы можете загрузить аудио динамически, например:

var audioFiles = ["url","url2","url3"]; 

var z = 0; 
var audioPlayer = $("#audioPlayer")[0]; 

var playAudio = function(){ 
    audioPlayer.src = audioFiles[z]; 
    audioPlayer.load(); 
    audioPlayer.play();  
} 
+1

Я только узнал, что по какой-то причине мое соединение с Dropbox плохо (я пытаюсь исправить мое соединение прямо сейчас), поэтому я не могу проверить ваш метод правильно теперь – Jaketr00

+0

Он работает на моей машине :-) – Donal

+1

Мне нужно было пойти в Internet Explorer, чтобы получить Dropbox для работы (проблема с Google Chrome chrome? cookie), и он отлично работает, спасибо! – Jaketr00