首页 > 网络技术 > 让flash植入代码符合xhtml标准

让flash植入代码符合xhtml标准

2010年2月23日 Terence 383 次阅读 发表评论 阅读评论

      博客中添加flash视频已是非常普遍的事,但有没有注意到一个问题,各大视频网站所提供的视频html分享代码并不符合xhtml里任何一个版本的标准。以下是添加了视频后的网站用w3c标准组织提供的xhtml验证网站验证出来的结果:

      我们来看视频网站提供的分享代码:

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="vedio.swf" /><embed type="application/x-shockwave-flash" width="400" height="300" src="vedio.swf"></embed></object>

      代码应分成两个部分分析,即前面的<object>标签段和后面的<embed>标签段,2段内容提供的都是相同的功能,之所以这么写是因为视频网站要做到各个浏览器的显示兼容,IE浏览器使用的是<object>标签,而FireFox用的是<embed>标签。

      出现xhtml错误的原因其实很简单,<embed>语法并不在w3c制定的xhtml标准内,其原因有很多,但我认为最主要是因为这个标签是网景公司当年叱咤风云的Netscape浏览器所创设的,中间可能有版权问题、标准问题乃至后来的浏览器没落等一系列的影响所导致的。虽然此标签仍被多数浏览器所支持,但从维护标准的立场来说,标准统一必是一个大的趋势。

      现在我们所要做的就是修改代码来做到符合标准,既然<object>标签是符合xhtml规范的,那么我们就从他入手。先删除<embed>标签段,但此时的<object>标签段只能在IE中发挥作用,而FireFox等第三方浏览器是显示不出视频的,原因是其中的:

classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"

      很明显,他是在调用flash的com组件,非microsoft平台肯定不支持,取而代之的应是type属性,来指定object的数据类型。另外,FireFox用data属性来定位flash文件,而IE用param段来定位文件。有了这个思路接下来的事就好办了,我们只要加上以下两段来替换掉classid段:

type="application/x-shockwave-flash"

data="xxx" //这边的xxx就是param段中value所包含的部分

      整理后的代码如下:

<object type="application/x-shockwave-flash" data="vedio.swf" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="vedio.swf" /></object>

      可能会问,为什么还要保留codebase段,原因是保留他的话如果在碰到IE没有安装flash插件的情况,IE会自动下载插件并提示安装,反之就只会显示一个红叉。

      至此,代码就可以完美通过xhtml验证了,算是为了维护网页标准做出的小小的贡献吧~~ :lol:





分类: 网络技术 标签: , ,
  1. ask
    2010年2月27日16:22 | #1
    Internet Explorer 6.0 Internet Explorer 6.0 Windows XP Windows XP

    学习了~~ :razz:

    [回复]