1.embed是非法的
标签是Netscape的私有标签,虽然标签应用广泛存在,但是从HTML3.2,HTML4.0到XHTML1.0,W3C都没有收录这个标签。使用标签的页面将不能通过W3C校验。
2.应该用object
W3C推荐的是
但是这个方法在IE5-IE6/Win上不能正确显示(不能连续播放,要下载完才能放),在低版本的可以正确显示。后来采用先调一个小flash文件再嵌入大flash文件的方法解决了连续播放的问题,但是在IE5以上版本有时依然出现不能显示flash的情况。
3.目前的临时办法
那么既要符合标准,又想在所有浏览器正确显示flash应该怎么做?macromedia网站是如何通过W3c校验的?
有设计师想到了用JavaScript来隐藏非法的标签,
if (navegiator . mimeTypes && navigator . mimeTypes["application/x-shockwave-flash"] { document . write('这是目前比较好的解决办法。你一定要插flash,就用js调用。这种方法可以欺骗W3C的校验程序,使页面通过校验。但仅仅是"欺骗",而不是真符合标准。
macromedia是怎么做的呢?看到这句代码:
它采用了一个折中二选一的办法:
- (1).首先javascript来判断你的浏览器版本和flash player的版本;
- (2).根据版本的不同在后台动态的生成HTML代码。
简单说就是默认采用方法,如果浏览器不能处理object的MIME类型“ application/x-shockwave-flash”,它就插入子元素。说穿了,这和用js隐藏方法类似,也是一种“欺骗”的办法,但这是目前能够做到的最符合标准的,比较完美的做法了。
要想真正抛弃,只能等IE浏览器对更好的支持才行,也许要等到Longhorn出来了。