2009年1月Microsoft更新破坏了IE7中的mp3声音对象

问题描述 投票:0回答:2

我维护的一些网站在页面中使用HTML音频/ mp3对象。他们习惯工作,但随后出现了问题。如果客户端浏览器是IE,则页面依赖于Windows Media Player。

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

但现在看起来像一个邮件插槽附加一个小滚动条。 点击这个link查看。 alt text (来源:calgarydj.ca

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

我已经搜索了答案,但只发现了另外一个问题。我看过其他一些有相关问题的网站。这里有another site似乎有同样的问题 - 请参阅this page的音频示例。

  1. 还有其他人遇到过这个问题吗? Windows XP上的IE7(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 -->

这是一个非常酷的网站。但我试图在这篇文章中添加图片,图片永远不会出现在最后的帖子中。我错过了什么?

html browser internet-explorer-7
2个回答
0
投票

所以我最终使用IE条件评论(呃!)来解决问题。这很丑,但它确实有效。它甚至可以验证为XHTML。

仍然有2个嵌套对象,但现在IE条件注释包装器隐藏了第一个对象,因此IE没有看到它,只有第二个。 Firefox,Safari和Chrome查看第一个对象并使用Quicktime插件(如果已安装)来呈现控件。

其他浏览器忽略IE条件注释,因为它们看起来像一个常规的打开/关闭注释块,中间有一点点胡言乱语。

注意:下面注释行周围的刻度线(`)不属于那里,但是你做了必要的事情来解决这里的问题。

`<!--[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曾经忽略了audio / mpeg类型的对象,除非他们拥有Windows Media Player(WMP)的合法CLSID标签。由于第二个对象(在我之前的模型中)确实有一个CLSID,因此IE会呈现一个WMP控件,一切都会变得很难看。其他浏览器只是识别第一个对象并使用Quicktime插件进行声音控制。

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

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

所以IE浏览器自己的条件评论让我摆脱了困境,但微软却在自己的浏览器中捣乱!为什么微软?为什么?


-1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.