让内嵌多媒体通过 XHTML 验证


解决:
如果你不在乎你的网页是否符合标准,那照上面那样做就可以了。如果你还想追求更加完美,请看下面的解决方案:

下面以 flash 为例来介绍,方法同样适用于其他类型的多媒体内容。

我们知道 W3C 推荐使用的是 object 标签,但用法却不是 Internet Explorer 那种用 classid 来区分控件类型,而是采用 type 来指定 MIME 类型。现在的 Mozilla、Firefox 和 Opera 都支持这种用法,虽然 IE 目前的版本也支持这种用法,不过很可惜的是,IE 还是有 bug,那就是只有全部下载完毕才能播放。而且还不是所有的情况下都能用。在某些 IE 浏览器上还显示空白。所以单纯用 W3C 推荐的 object 标签用法还是不够的。但是我们可以作一下变通,如果是用户浏览器是 IE 的话,我们就用 IE 的 object 的用法,如果是其他浏览器,我们就采用 W3C 的用法。这样就可以两全其美了。也许此刻,你觉得我们该用到脚本了。不,我们不需要脚本。我们只需要用 IE 所特有的条件注释和 CSS 就可以做到了。例子如下:

<style type="text/css">
.mozilla {
  display:block;
}
</style>
<!--[if IE]>
<style type="text/css">
.mozilla {
  display:none;
}
</style>
<![endif]-->

<object
  data="flashdatei.swf"
  type="application/x-shockwave-flash"
  height="275"
  width="256"
  class="mozilla">
  <param name="autoplay" value="true">
</object>
<!--[if IE]>
<object
  classid="cclsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
  width="256"
  height="275">
  <param name="src" value=""flashdatei.swf">
</object>
<![endif]-->
你会发现其实就是把 embed 替换成了 object,而且位置也从 IE 的 object 中移出来了。embed 标签里的 src 属性在 object 中变成了 data 属性。而 firefox 等非 IE 浏览器因为不认识 <!–[if IE]> 标签,所以其中的部分都当作注释忽略了。而 IE 因为执行了 <!–[if IE]> 中的内容,所以 firefox 中可以识别的那个 object 因为 css 被重新定义而被隐藏了。

好了,现在不但可以完美播放,而且可以通过 XHTML 验证了!太酷了!

上一篇: 完美内嵌 Flash
下一篇: QQ强制聊天代码
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: ASP 程序
相关日志:
评论: 0 | 引用: 156 | 查看次数: 11649
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1 字 | UBB代码 关闭 | [img]标签 关闭