Есть ли способ отследить завершение события загрузки звукового файла? - PullRequest
5 голосов
/ 08 декабря 2010

Я хотел бы иметь возможность перехватить событие браузера , которое сообщает мне, когда ресурс файла WAV успешно завершил загрузку в кэш браузера.

При таком событии я могу выложить некоторый текст на страницу во время загрузки файла, прося пользователя быть терпеливым к его прибытию. В конце концов, они ожидают немедленного прослушивания файла, но этого не произойдет, если файл уже не находится в кэше (от предыдущих посещений страницы). После мероприятия я могу выложить сообщение, что музыка готова к воспроизведению и т. Д.

В IE используется BGSOUND, который является частным элементом, изобретенным Microsoft, и он не генерирует никаких событий (вы можете ожидать, что «onload» будет одним, но это не так). Аудио объекты в Javascript могут быть созданы, но ... похоже, нет способа перехватить событие браузера, которое сообщает вам, когда звуковой файл (например, WAV-файл) завершил загрузку.

Я бы принял любое решение, особенно если оно касается Javascript. Обратите внимание, что «очевидное» событие загрузки страницы не подходит, потому что оно не происходит на нужном мне уровне детализации.

Также обратите внимание, что я успешно загружаю и воспроизводю музыкальные файлы как в IE, так и в Firefox с моим текущим кодом Javascript, но очень хотел бы улучшить работу моего пользователя с сообщениями, которые просят терпения, пока они ждут загрузки больших музыкальных файлов.

Ответы [ 2 ]

1 голос
/ 30 декабря 2010

К сожалению, этот не будет работать с файлом WAV : просто используйте API из звукового тега HTML5, например так:

var audioElement = document.createElement('audio');
audioElement.setAttribute('src', 'backgroundsound.ogg');
audioElement.load()
audioElement.addEventListener("load", function() {
    alert('Loading done!')
    audioElement.play();
}, true);

Я думаю, что звуковой файл может быть только ogg (vorbis) или mp3 .

1 голос
/ 17 декабря 2010

Если вы можете использовать SoundManager2 , то каждый отдельный аудиоклип имеет событие onload и свойство readyState. Также получено событие whileloading, которое периодически запускается во время загрузки данных.

Обратите внимание, что вашей пользовательской базе потребуется либо плагин Flash (или браузер, поддерживающий HTML5 Audio, если вы включили этот параметр), а для полной поддержки платформы звуки должны быть в формате MP3 / MP4 .

Если эти ограничения приемлемы, тогда SM2 - это то, что вам нужно.

...