<embed>标签.netscape的私有标签,虽然<embed>标签应用广泛存在,但是从html3.2,html4.0到xhtml1.0,w3c都没有收录这个标签。使用<embed>标签的页面将不能通过w3c校验。
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的情况。
那么既要符合标准,又想在所有浏览器正确显示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. -->它采用了一个折中二选一的办法:
简单说就是默认采用<object>方法,如果浏览器不能处理object的mime类型“ application/x-shockwave-flash”,它就插入子元素<embed>。说穿了,这和用js隐藏< embed>方法类似,也是一种“欺骗”的办法,但这是目前能够做到的最符合标准的,比较完美的做法了。
要想真正抛弃<embed>,只能等ie浏览器对<object>更好的支持才行,也许要等到longhorn出来了。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器