网页中嵌入Flash

完美内嵌 Flash
客户端要求:安装你所使用的浏览器的 Flash 插件。

代码:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="420" height="320">
<param name="movie" value="20120311.swf" />
<param name="quality" value="high" />
<embed src="20120311.swf" quality="high" type="application/x-shockwave-flash" width="420" height="320"></embed>
</object>

让内嵌多媒体通过 XHTML 验证

问题:上面的所有的代码,虽然能够完美的在各个浏览器上很好的播放了,但是还有一点美中不足,那就是这样的页面无法通过 XHTML 验证。原因是 embed 标签从来都不是 HTML 标准中的标签,因此 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="20120311.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=""20120311.swf">
</object>
<![endif]-->

分析:其实就是把 embed 替换成了 object,而且位置也从 IE 的 object 中移出来了。embed 标签里的 src 属性在 object 中变成了 data 属性。而 firefox 等非 IE 浏览器因为不认识 <!–[if IE]> 标签,所以其中的部分都当作注释忽略了。而 IE 因为执行了 <!–[if IE]> 中的内容,所以 firefox 中可以识别的那个 object 因为 css 被重新定义而被隐藏了。

posted @ 2012-03-11 15:11  nxusheng  阅读(221)  评论(0编辑  收藏  举报