2009年1月微软更新打破IE7中的MP3声音对象


0

我有两个网站维护在一个页面内使用HTML音频/ MP3对象。他们用来工作,但之后有些事情破裂了。如果客户端浏览器是IE,则页面依赖于Windows Media Player。

大约一个月前,该对象将显示为WMP控件。它应该看起来像this alt text http://calgarydj.ca/img/wmp.jpg

但现在看起来像一个邮件插槽附带一个微小的滚动条。
点击此link即可查看。 alt text http://calgarydj.ca/img/wmp2.jpg

我认为这种变化可能已经2009年1月微软更新发生。

我已经搜索了答案,但只发现了一个关于此问题的其他问题。我有 看到一些其他网站有相关的问题。这里是another site,似乎有相同的问题 - 音频示例见this page

  1. 有没有人遇到过这个问题? IE7在Windows XP(2系统)
  2. 这是发生在Vista或只是XP(或者它只是我的2系统)?
  3. 有没有修复?

下面是一个典型的声音对象

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

这是一个很酷的网站的HTML。但是我已经试图在这篇文章中添加图片,图片从未出现在最终文章中。我错过了什么?

-1

我强烈建议使用Adobe Flash在网站上播放音乐。与使用Windows Media Player等外部播放器相比,它几乎是无懈可击的,您还可以完全控制播放器的外观。

  0

那么这种技术用于直到最近的工作,它只是现在在IE7中失败。 IE7通常需要一个CLSID。我嵌套了2个对象,这样如果第一个对象没有被识别,浏览器就会在第二个对象中出现。 正确的编程会有第三次故障安全。 无论如何,你错过了这一点。 22 2月. 092009-02-22 16:36:37

  0

当我第一次看到这个答案时,我想把它投下来,因为我讨厌Flash,但是我没有'名气。恕我直言,FF中最有用的加载项之一是Flashblock,因为swf是一种无处不在的资源管理和超负荷霸主。所以我支持我的原始答案,它仍然适用于大多数浏览器。 21 3月. 112011-03-21 09:16:08


0

所以我结束了使用IE条件注释(唉!)来解决问题。这是丑陋的,但它的工作原理。它甚至验证XHTML

仍然有2个嵌套对象,但现在IE条件注释包装器隐藏了第一个对象,所以IE没有看到它,只有第二个。 Firefox,SafariChrome查看第一个对象并使用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使用,除非他们的Windows Media Player(WMP)一个合法的CLSID标签忽略音频/ MPEG类型的对象。由于第二个对象(在我之前的模型中)确实有一个CLSID,因此IE会呈现WMP控件,并且所有内容都只是简单的。其他浏览器只会识别第一个对象,并使用Quicktime插件进行声音控制。

2008年12月9日,微软又发布了Windows Media Player的安全更新。一切仍然像以前一样工作(对我来说)。接下来是2009年1月13日的另一个更新,部分原因是要修补12月9日WMP更新。 (见this article)。这是当事情停止工作(在IE)。

现在,IE7(在XP上)将无类对象呈现为具有滚动条的邮件插槽。它们与LCD屏幕上的邮件插槽一样有用。 IE浏览器满意它已经完成了它的工作,忽略了第二个嵌套了正确CLSID的对象。

因此IE自己的有条件的评论让我从这里泡菜,但这是微软向自己的浏览器投掷扳手!为何选择微软为什么?