Я создаю веб-приложение, которое использует MediaElement.js (ME.js) для воспроизведения звука и отображения видео в разных браузерах.Однако у меня возникают проблемы с IE8: когда я создаю экземпляр MediaElement с элементом <audio>
из DOM, объект флэш-памяти создается и вставляется в DOM, но затем носитель не загружается.Об ошибках не сообщается.Вместо этого ничего не происходит.
Пытаясь отладить его, я создал небольшую тестовую страницу, которая также использует ME.js, который пытается воспроизвести тот же аудиофайл.Странно, но эта страница работает нормально.IE8 загружает и воспроизводит файл.Я попытался посмотреть, что обе эти страницы выводят в DOM, чтобы увидеть, могу ли я получить подсказку о том, что идет не так.
Это из веб-приложения:
<OBJECT id=me_flash_0 codeBase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 width=1 height=1><PARAM NAME="_cx" VALUE="26"><PARAM NAME="_cy" VALUE="26"><PARAM NAME="FlashVars" VALUE="id=me_flash_0&isvideo=false&autoplay=false&preload=auto&width=1&startvolume=0.8&timerrate=250&height=1&file=http%3A%2F%2Fgsv%2Felearning%2Fapp%2F_dev%2Ftest1.mp3"><PARAM NAME="Movie" VALUE="plugins/flashmediaelement.swf?x=Tue Dec 6 16:06:01 UTC+0100 2011"><PARAM NAME="Src" VALUE="plugins/flashmediaelement.swf?x=Tue Dec 6 16:06:01 UTC+0100 2011"><PARAM NAME="WMode" VALUE="Transparent"><PARAM NAME="Play" VALUE="-1"><PARAM NAME="Loop" VALUE="-1"><PARAM NAME="Quality" VALUE="High"><PARAM NAME="SAlign" VALUE=""><PARAM NAME="Menu" VALUE="-1"><PARAM NAME="Base" VALUE=""><PARAM NAME="AllowScriptAccess" VALUE="always"><PARAM NAME="Scale" VALUE="ShowAll"><PARAM NAME="DeviceFont" VALUE="0"><PARAM NAME="EmbedMovie" VALUE="0"><PARAM NAME="BGColor" VALUE="000000"><PARAM NAME="SWRemote" VALUE=""><PARAM NAME="MovieData" VALUE=""><PARAM NAME="SeamlessTabbing" VALUE="1"><PARAM NAME="Profile" VALUE="0"><PARAM NAME="ProfileAddress" VALUE=""><PARAM NAME="ProfilePort" VALUE="0"><PARAM NAME="AllowNetworking" VALUE="all"><PARAM NAME="AllowFullScreen" VALUE="true"></OBJECT>
… И это из тестовой страницы:
<OBJECT id=me_flash_0 codeBase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 width=1 height=1><PARAM NAME="_cx" VALUE="26"><PARAM NAME="_cy" VALUE="26"><PARAM NAME="FlashVars" VALUE="id=me_flash_0&isvideo=false&autoplay=false&preload=auto&width=1&startvolume=0.8&timerrate=250&height=1&file=http%3A%2F%2Fgsv%2Felearning%2Fapp%2F_dev%2Ftest1.mp3"><PARAM NAME="Movie" VALUE="plugins/flashmediaelement.swf?x=Tue Dec 6 16:08:13 UTC+0100 2011"><PARAM NAME="Src" VALUE="plugins/flashmediaelement.swf?x=Tue Dec 6 16:08:13 UTC+0100 2011"><PARAM NAME="WMode" VALUE="Transparent"><PARAM NAME="Play" VALUE="0"><PARAM NAME="Loop" VALUE="-1"><PARAM NAME="Quality" VALUE="High"><PARAM NAME="SAlign" VALUE="LT"><PARAM NAME="Menu" VALUE="-1"><PARAM NAME="Base" VALUE=""><PARAM NAME="AllowScriptAccess" VALUE="always"><PARAM NAME="Scale" VALUE="NoScale"><PARAM NAME="DeviceFont" VALUE="0"><PARAM NAME="EmbedMovie" VALUE="0"><PARAM NAME="BGColor" VALUE="000000"><PARAM NAME="SWRemote" VALUE=""><PARAM NAME="MovieData" VALUE=""><PARAM NAME="SeamlessTabbing" VALUE="1"><PARAM NAME="Profile" VALUE="0"><PARAM NAME="ProfileAddress" VALUE=""><PARAM NAME="ProfilePort" VALUE="0"><PARAM NAME="AllowNetworking" VALUE="all"><PARAM NAME="AllowFullScreen" VALUE="true"></OBJECT>
Обратите внимание, что есть разница: в первом фрагменте написано <PARAM NAME="Play" VALUE="-1">
, а во втором - <PARAM NAME="Play" VALUE="0">
.Это как-то важно, но я понятия не имею, как это интерпретировать.Пожалуйста, обратите внимание, что это не разметка, сгенерированная ME.js, а то, что каким-то образом генерируется при загрузке файла .swf.Не будучи экспертом в области флэш-памяти, я не могу объяснить, как именно.
Когда я использую Fiddler для отслеживания загружаемых ресурсов, разница между двумя страницами заключается в том, что перваястраница загружает файл .swf как последнюю вещь, а вторая загружает файл .swf, а затем загружает файл .mp3.
Следует отметить, что веб-приложение работает в Chrome, когда я заставляю его использовать флэш-плагинвместо собственных элементов HTML.