Мне нужно в фоновом режиме загрузить некоторые WAV-файлы для HTML-страницы, используя AJAX. Я использую AJAX, чтобы получить подробную информацию о файлах WAV, затем использую тег embed, и я могу подтвердить, что файлы были успешно загружены, потому что, когда я устанавливаю autostart в true, файлы воспроизводятся. Однако мне нужно, чтобы файлы воспроизводились только тогда, когда пользователь нажимает кнопку (или событие запускается). Ниже приведен мой код для предварительной загрузки этих файлов:
function preloadMedia() {
for(var i = 0; i < testQuestions.length; i++) {
var soundEmbed = document.createElement("embed");
soundEmbed.setAttribute("src", "/media/sounds/" + testQuestions[i].mediaFile);
soundEmbed.setAttribute("hidden", true);
soundEmbed.setAttribute("id", testQuestions[i].id);
soundEmbed.setAttribute("autostart", false);
soundEmbed.setAttribute("width", 0);
soundEmbed.setAttribute("height", 0);
soundEmbed.setAttribute("enablejavascript", true);
document.body.appendChild((soundEmbed));
}
}
Я использую следующий код для воспроизведения файла (в зависимости от того, какой звуковой файл хочет воспроизвести пользователь)
function soundPlay(which) {
var sounder = document.getElementById(which);
sounder.Play();
}
Что-то здесь не так, поскольку ни один из браузеров, на которых я тестировал, не воспроизводил файлы, используя код выше. Ошибок нет, а код просто возвращается.
Я бы так и оставил (то есть - я бы убедил клиента конвертировать все WAV в MP3 и использовать MooTools). Но я понял, что могу воспроизводить звуковые файлы , которые не были встроены динамически .
Таким образом, та же функция soundPlay будет работать для файла, внедренного следующим образом:
<embed src="/media/sounds/hug_sw1.wav" id="sound2" width="0" heigh="0" autostart="false" enablejavascript="true"/>
в любом месте HTML.
И он хорошо работает во всех браузерах.
Кто-нибудь знает это? Это какое-то недокументированное ограничение безопасности во всех браузерах? (Пожалуйста, помните, что файлы предварительно загружаются динамически, что я могу подтвердить, установив для свойства autostart значение true - они все воспроизводятся).
Любая помощь приветствуется.