代码之家  ›  专栏  ›  技术社区  ›  Vadym Stetsiak

2009年1月Microsoft更新在IE7中中断MP3声音对象

  •  0
  • Vadym Stetsiak  · 技术社区  · 7 年前

    有几个网站我坚持在页面中使用HTML音频/MP3对象。他们过去经常工作,但后来有东西坏了。如果客户端浏览器是IE,则页面依赖于Windows Media Player。

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

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

    我想这个变化 可以 发生在 2009年1月Microsoft更新 是的。

    我一直在寻找答案,但只找到一个关于这个问题的其他问题。我有 看到其他一些有相关问题的网站。这是 another site 这似乎也有同样的问题 this page 对于音频示例。

    1. 还有人经历过这个问题吗?Windows XP上的IE7(2个系统)
    2. 这是在vista上发生的还是在xp上发生的(或者只是我的两个系统)?
    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 -->
    

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

    2 回复  |  直到 7 年前
        1
  •  0
  •   Vadym Stetsiak    17 年前

    所以我最后用 IE条件注释 (啊!)来解决这个问题。这很难看,但很管用。甚至 验证 作为 XHTML语言 是的。

    仍然有两个嵌套对象,但是现在一个ie条件注释包装器隐藏了第一个对象,因此ie看不到它,只有第二个。 Firefox、Safari 查看第一个对象并使用 快速时间 用于呈现控件的插件(如果已安装)。

    其他浏览器忽略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。其他浏览器只需识别第一个对象,并使用QuiTime插件进行声音控制。

    2008年12月9日,微软发布了另一个windows媒体播放器安全更新。一切都像以前一样(对我来说)。随后在2009年1月13日又发布了一个更新,部分目的是修补12月9日的wmp更新。(见 this article )中。那就是事情停止(在ie上)的时候。

    现在ie7(在xp上)呈现 不上课 对象,它看起来像带有滚动条的邮件槽。它们就像液晶屏上的邮件槽一样有用。IE浏览器满意地完成了它的工作,忽略了第二个对象,其中嵌套了正确的CLSID。

    所以我是自己的 有条件的评论 让我从困境中解脱出来,但正是微软给自己的浏览器制造了麻烦!为什么是微软?为什么?

        2
  •  -1
  •   Сыч    17 年前

    我强烈建议使用adobe flash在网站上播放音乐。与使用像Windows Media Player这样的外部播放器相比,它几乎是防弹的,而且您也可以完全控制玩家的外观。

    推荐文章