MediaElement.js не загружает медиа в IE8 - PullRequest
2 голосов
/ 07 декабря 2011

Я создаю веб-приложение, которое использует 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&amp;isvideo=false&amp;autoplay=false&amp;preload=auto&amp;width=1&amp;startvolume=0.8&amp;timerrate=250&amp;height=1&amp;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&amp;isvideo=false&amp;autoplay=false&amp;preload=auto&amp;width=1&amp;startvolume=0.8&amp;timerrate=250&amp;height=1&amp;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.

1 Ответ

6 голосов
/ 08 декабря 2011

Оказывается, что флэш-объекты не будут загружать свой медиа-файл, если он находится внутри элемента с visibility:hidden. Только в IE.

...