Jan 2009 La mise à jour de Microsoft casse les objets audio mp3 dans IE7


0

Je maintiens quelques sites Web qui utilisent des objets HTML audio/mp3 dans une page. Ils ont l'habitude de travailler mais quelque chose s'est cassé. Les pages s'appuient sur Windows Media Player si le navigateur client est IE.

Il y a environ un mois, l'objet apparaissait comme un contrôle WMP. Cela devrait ressembler à this alt text http://calgarydj.ca/img/wmp.jpg

Maintenant, ce qui ressemble à un emplacement de courrier est une minuscule barre de défilement. Cliquez sur ce link pour voir. alt text http://calgarydj.ca/img/wmp2.jpg

Je pense que ce changement peut se sont produits avec les Jan 2009 mises à jour Microsoft.

J'ai cherché des réponses mais n'ai trouvé qu'une autre question à ce sujet. J'ai vu quelques autres sites avec des problèmes connexes. Voici another site qui semble avoir les mêmes problèmes - voir this page pour l'exemple audio.

  1. Est-ce que quelqu'un d'autre a rencontré ce problème? IE7 sur Windows XP (2 systèmes)
  2. Est-ce que cela se produit sur Vista ou juste XP (ou est-ce juste mes 2 systèmes)?
  3. Y a-t-il un correctif?

Voici le code html pour un objet sonore typique

<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 --> 

Ce site est assez cool. Mais j'ai essayé d'ajouter des images à ce post et les images n'apparaissent jamais sur le post final. Qu'est-ce que je rate?

-1

Je suggère fortement d'utiliser Adobe Flash pour lire de la musique sur un site Web. Il est presque à l'épreuve des balles par rapport à l'utilisation de lecteurs externes comme Windows Media Player et vous aurez également un contrôle total de l'apparence de votre lecteur.

  0

Eh bien, cette technique avait l'habitude de fonctionner jusqu'à récemment et elle ne fonctionne que dans IE7 maintenant. IE7 a généralement besoin d'un CLSID. J'ai imbriqué 2 objets de sorte que si le premier objet n'est pas reconnu, le navigateur a un aller au 2ème. Une programmation correcte aurait eu une troisième sécurité intégrée. De toute façon, vous avez manqué le point. 22 févr.. 092009-02-22 16:36:37

  0

Quand j'ai lu cette réponse, je voulais la rejeter parce que je déteste Flash, mais je n'avais pas de réputation. À mon humble avis, l'un des compléments les plus utiles à FF est Flashblock parce que swf est un suzerain de ressources et un overdose de surcharge si omniprésents. Donc, je me tiens à ma réponse originale, qui fonctionne toujours sur la plupart des navigateurs. 21 mars. 112011-03-21 09:16:08


0

Donc j'ai fini par utiliser IE commentaires conditionnels (pouah!) Pour remédier au problème. C'est moche mais ça marche. Même valide comme XHTML.

Il y a encore 2 objets imbriqués mais maintenant un wrapper de commentaires conditionnel IE cache le premier objet de sorte qu'IE ne le voit pas, seulement le second. Firefox, Safari et Chrome voir le premier objet et utiliser le plugin Quicktime (si installé) pour rendre un contrôle.

Les autres navigateurs ignorent les commentaires conditionnels d'IE car ils ressemblent à un bloc de commentaires ouvert/fermé avec un peu de charabia au milieu.

NOTE: T Les graduations (`) entourant les lignes de commentaire ci-dessous n'appartiennent pas à cet emplacement, mais vous faites ce qui est nécessaire pour que les choses fonctionnent ici.

`<!--[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> 

Il n'y a pas longtemps IE7 utilisé pour ignorer les objets de type audio/mpeg à moins d'avoir une étiquette CLSID legit pour Windows Media Player (WMP). Puisque le deuxième objet (dans mon modèle précédent), avait un CLSID, IE rendrait un contrôle WMP et tout serait juste ducky. Les autres navigateurs reconnaissent simplement le premier objet et utilisent le plugin Quicktime pour un contrôle du son.

Le 9 décembre 2008, Microsoft a publié une autre mise à jour de sécurité Windows Media Player. Tout fonctionnait encore comme avant (pour moi). Ceci a été suivi d'une autre mise à jour le 13 janvier 2009, destinée en partie à corriger la mise à jour du WMP du 9 décembre. (Voir this article). C'est quand les choses ont cessé de fonctionner (sur IE).

Maintenant, IE7 (sous XP) rend les objets no-class comme quelque chose qui ressemble à une boîte aux lettres avec une barre de défilement. Ils sont à peu près aussi utiles qu'une fente de courrier sur un écran LCD. Et le navigateur IE, satisfait qu'il a fait son travail, ignore le deuxième objet avec le CLSID correct imbriqué à l'intérieur. Donc, les propres commentaires d'IE m'ont sorti d'un pickle ici mais c'était Microsoft qui a jeté une clé dans son propre navigateur! Pourquoi Microsoft? Pourquoi?