Pittzh
unread,Sep 4, 2008, 4:58:44 AM9/4/08Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to 南瓜社区
1.embed是非法的
<embed>标签是Netscape的私有标签,虽然<embed>标签应用广泛存在,但是从HTML3.2,HTML4.0到
XHTML1.0,W3C都没有收录这个标签。使用<embed>标签的页面将不能通过W3C校验。
2.应该用object
W3C推荐的是<object>标签。甚至在XHTML2中,<img>都要被<object>所取代。用<object>方法插入flash的代码
是:
<object type=”application/x-shockwave-flash” data=”test.swf”
width=”200″ height=”100″> <parm name=”movie” value=”test.swf /> </
object>
但是这个方法在IE5-IE6/Win上不能正确显示(不能连续播放,要下载完才能放),在低版本的可以正确显示。后来采用先调一个小flash文件再
嵌入大flash文件的方法解决了连续播放的问题,但是在IE5以上版本有时依然出现不能显示flash的情况。
3.目前的临时办法
那么既要符合标准,又想在所有浏览器正确显示flash应该怎么做?macromedia网站是如何通过W3c校验的?
有设计师想到了用JavaScript来隐藏非法的<embed>标签,
<script type=”text/javascript “> if (navegiator . mimeTypes &&
navigator . mimeTypes["application/x-shockwave-flash"] { document .
write(’<embed src=”test . swf” …
这是目前比较好的解决办法。你一定要插flash,就用js调用。这种方法可以欺骗W3C的校验程序,使页面通过校验。但仅仅是”欺骗”,而不是真符合
标准。
macromedia是怎么做的呢?看到这句代码:
<!– $RCSfile: FlashDetection2k.pm,v $ $Revision: 1.68 $ : your
browser’s accept header indicates you have Flash 6,0,65,0 or better,
so you’re OK for this Flash 6 movie, here it comes. –>
它采用了一个折中二选一的办法:
(1).首先javascript来判断你的浏览器版本和flash player的版本;
(2).根据版本的不同在后台动态的生成HTML代码。
简 单说就是默认采用<object>方法,如果浏览器不能处理object的MIME类型“ application/x-shockwave-
flash”,它就插入子元素<embed>。说穿了,这和用js隐藏< embed>方法类似,也是一种“欺骗”的办法,但这是目前能够做到的最符合
标准的,比较完美的做法了。
要想真正抛弃<embed>,只能等IE浏览器对<object>更好的支持才行,也许要等到Longhorn出来了。