2009-02-22 7 views
0

Есть несколько веб-сайтов, которые я поддерживаю, которые используют HTML-аудио/mp3-объекты на странице. Они работают, но потом что-то сломалось. Страницы полагаются на Windows Media Player, если клиентский браузер IE.январь 2009 г. Обновление Microsoft прерывает звуковые файлы mp3 в IE7

Месяц назад объект будет отображаться как элемент управления WMP. Он должен выглядеть так: this alt text http://calgarydj.ca/img/wmp.jpg

Но теперь то, что кажется похожим на почтовый слот, крошечная прокрутка.
Нажмите на это link для просмотра. alt text http://calgarydj.ca/img/wmp2.jpg

Я думаю, что это изменение может произошло с Jan 2009 обновлений Microsoft.

Я искал ответы, но нашел только один другой вопрос относительно этого. У меня видел несколько других сайтов со связанными проблемами. Вот another site, который, похоже, имеет те же проблемы - см. this page для примера с аудио.

  1. У кого-нибудь еще была эта проблема? IE7 на Windows XP (2 системы)
  2. Это происходит на Vista или просто XP (или это только мои 2 системы)?
  3. Есть ли исправление?

Вот HTML для типичного звукового объекта

<div class="music"> 
    <p>Pachelbel's Canon</p> 
    <object id="Cannon" type="audio/mpeg" data="./sound%20files/Pachebels%20Cannon.mp3" width="250" height="16"> 
    <param name="autoplay" value="false" /> 
    <param name="src" value="./sound files/Pachebels%20Cannon.mp3" /> 
    <object id="Cannon" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" width="250" height="50"> 
     <param name="autostart" value="false" /> 
     <param name="url" value="./sound%20files/Pachebels Cannon.mp3" /> 
     <param name="showcontrols" value="true" /> 

     <param name="volume" value="100" /> 
    </object> 
    </object> 
</div><!-- end of control --> 

Это довольно крутой сайт. Но я попытался добавить изображения к этому сообщению, и изображения никогда не появляются на последнем сообщении. Что мне не хватает?

ответ

-1

Я настоятельно рекомендую использовать Adobe Flash для воспроизведения музыки на веб-сайте. Он почти пуленепробиваемый по сравнению с использованием внешних проигрывателей, таких как Windows Media Player, и вы также сможете полностью контролировать внешний вид вашего плеера.

+0

Ну, этот метод использовался до недавнего времени, и он только терпит неудачу в IE7 сейчас. Для IE7 обычно требуется CLSID. Я вложил 2 объекта, чтобы, если первый объект не распознается, браузер переходит на второй. Правильное программирование имело бы 3-й отказоустойчивый. В любом случае, вы пропустили точку. – Diogenes

+0

Когда я впервые прочитал этот ответ, мне захотелось проголосовать за него, потому что я ненавижу Flash, но у меня не было никакой репутации. IMHO, одна из самых полезных надстроек для FF - это Flashblock, потому что swf - это такой скучный ресурс hog и overload overlord. Поэтому я поддерживаю свой первоначальный ответ, который по-прежнему работает в большинстве браузеров. – Diogenes

0

Таким образом, я решил использовать IE условные комментарии (ugh!), Чтобы исправить проблему. Это уродливо, но оно работает. Это даже проверяет как XHTML.

Есть еще 2 вложенных объекта, но теперь оболочка условных комментариев IE скрывает первый объект, поэтому IE его не видит, а только второй. Firefox, Safari и Хром см. Первый объект и используйте плагин Quicktime (если установлен) для визуализации элемента управления.

Другие браузеры игнорируют условные комментарии IE, потому что они выглядят как обычный открытый/закрытый блок комментариев с небольшой тарабарщиной посередине.

ПРИМЕЧАНИЕ: T он тикает (`), окружающие строки комментариев ниже, не там, но вы делаете то, что необходимо, чтобы заставить вещи работать здесь.

`<!--[if !IE]>-->` 
    <object id="Cannon" type="audio/mpeg" data="./sound%20files/Pachebels%20Cannon.mp3" width="250" height="16"> 
    <param name="autoplay" value="false" /> 
    <param name="src" value="./sound files/Pachebels%20Cannon.mp3" /> 
`<!--<![endif]>-->` 
    <object id="Cannon" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" width="250" height="60"> 
     <param name="autostart" value="false" /> 
     <param name="url" value="./sound%20files/Pachebels Cannon.mp3" /> 
     <param name="showcontrols" value="true" /> 
     <param name="volume" value="100" /> 
`<!--[if !IE]>--></object><!--<![endif]-->` 
</object> 

Не так давно IE7 используется для игнорирования объектов типа аудио/Mpeg, если у них не было законным CLSID тег для Windows Media Player (WMP). Поскольку у второго объекта (в моей предыдущей модели) есть CLSID, IE будет отображать WMP-элемент управления, и все будет просто ducky. Другие браузеры будут просто распознавать первый объект и использовать плагин Quicktime для управления звуком.

9 декабря 2008 г. Microsoft выпустила еще одно обновление безопасности для Windows Media Player. Все по-прежнему работало, как раньше (для меня). Это сопровождалось еще одним обновлением от 13 января 2009 года, предназначенным, в частности, для исправления обновления WMP от 9 декабря. (см. this article). Это когда ситуация перестала работать (на IE).

Теперь IE7 (на XP) отображает объекты класса как нечто похожее на почтовый слот с полосой прокрутки. Они примерно так же полезны, как почтовый слот на ЖК-экране. И браузер IE, довольный тем, что выполнил это задание, игнорирует второй объект с правильным вложенным CLSID.

Таким образом, собственный IE условные комментарии вывел меня из рассола, но именно Microsoft бросила ключ в свой собственный браузер! Почему Microsoft? Зачем?