如何在XHTML 1.0 Strict合法的前提下插入FLASH内容

XHTML的最终要求是,使得所有网页和浏览器按照而且只按照XHTML 1.0 Strict这个最高标准来控制内容。
传统的FLASH媒体的插入是使用<embed>标签,可惜的是这个标签是不被W3C XHTML 1.0 Strict所认可的,在W3C的FAQ里有过描述。W3C认为,<embed>标记从来就不曾是标准的一部分,只是浏览器大战留下来的炮灰罢了(好像是Netscape一方的)。同时,这篇FAQ里还提到了关于这个问题的一篇著名文章,称为Flash Satay方法。这个方法由Drew McLellan提出,主要思想是通过一个只有一句AS语句的FLASH桥达到载入参数传进的Flash文件的办法。同时,使用<object>标签替代<embed>标签。

可惜的是,这个方法未免太复杂了一些。此外还有很多人想到使用JavaScript来动态加入<embed>的Flash内容,这无异于饮鸩止渴,将表现层和行为层混为一谈,我认为是绝不可取的办法。

Joen Asmussen的博客Noscope里评价了这两种方法,并且指出仅仅使用<object>标签,不使用桥Flash也可以达到在XHTML 1.0 Strict合法的前提下插入FLASH内容的效果。Hixie具体地描述了这个方法。可惜的是,他的代码在我这里只在IE中有效,而在Firefox里却有些问题。这应该是Wordpress自动完成标记的副作用。

经过我的实验,可以正常使用的代码如下所述:

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" width="480" height="400">
<param name="movie" value="movie.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#FFFFFF" />
<object data="movie.swf" width="480" height="400" type="application/x-shockwave-flash">
<param name="quality" value="high" />
<param name="bgcolor" value="#FFFFFF" />
<param name="pluginurl" value="http://www.macromedia.com/go/getflashplayer" />
</object>
</object>

为了在Wordpress里面直接用而避免编辑器进行不必要的转换,建议使用下面这个无换行版。

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" width="480" height="400"><param name="movie" value="movie.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#FFFFFF" /><object data="movie.swf" width="480" height="400" type="application/x-shockwave-flash"><param name="quality" value="high" /><param name="bgcolor" value="#FFFFFF" /><param name="pluginurl" value="http://www.macromedia.com/go/getflashplayer" /></object></object>

你需要做的,仅仅是替换里面的两个movie.swf成你想要的,然后修改width和heigth成你想要的大小,就可以放心通过XHTML 1.0 Strict验证了。

关于 “如何在XHTML 1.0 Strict合法的前提下插入FLASH内容” 的 2 个意见

  1. 你自己去试试,你写的代码是否能够通过XHTML 1.0 Strict验证!!

发表评论