Вы можете предварительно загрузить, используя <audio />
для новых браузеров. Установите autoplay = false
. Для старых браузеров, которые не поддерживают <audio />
, вы можете использовать <bgsound />
. Для предварительной загрузки звука установите громкость на -10000
.
function preloadSound(src) {
var sound = document.createElement("audio");
if ("src" in sound) {
sound.autoPlay = false;
}
else {
sound = document.createElement("bgsound");
sound.volume = -10000;
}
sound.src = src;
document.body.appendChild(sound);
return sound;
}
Это даст звук в кеш вашего браузера. Затем, чтобы играть в нее, вы можете продолжать делать то, что делаете с <embed />
. Или, если вы хотите воспользоваться возможностями HTML5, вы можете вызвать .play()
для возвращенного элемента <audio />
. Вы даже можете добавить метод воспроизведения к <bgsound />
:
function loadSound (src) {
var sound = document.createElement("audio");
if ("src" in sound) {
sound.autoPlay = false;
}
else {
sound = document.createElement("bgsound");
sound.volume = -10000;
sound.play = function () {
this.src = src;
this.volume = 0;
}
}
sound.src = src;
document.body.appendChild(sound);
return sound;
}
Тогда используйте это так:
var sound = loadSound("/mySound.ogg"); // preload
sound.play();
Единственное предупреждение - FireFox не поддерживает mp3. Вам придется конвертировать ваши файлы в ogg.
Рабочая демоверсия: http://jsfiddle.net/PMj89/1/