特色栏目

ASP源码

PHP源码

.NET源码

JSP源码

游戏频道
专题合集
关闭菜单
首页> WEB标准化> 你在骗W3C,还是在骗自己的客户?

你在骗W3C,还是在骗自己的客户?

时间:2009-05-31 02:14:11 作者:互联网

这问题不知道该责骂不会自动更新的IE6,还是该诅咒不懂向下兼容的W3C标准。

这是FLASH传统的嵌入方法:

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://do***ad.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="32" height="32">

 <param name="movie" value="test.swf" />

  <param name="quality" value="high" />

  <embed src="test.swf" quality="high" pluginspage="http://ww***cromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="32" height="32">embed>

object>

使用 object 和 embed 标签来嵌入,细心的会发现,object 的很多参数和 embed 里面的很多属性是重复的。

有的浏览器支持 object ,有的支持 embed ,这也是为什么要修改 Flash 的参数时两个地方都要改的原因。这种方法是 Macromedia 一直以来的官方方法,最大限度的保证了 Flash 的功能,没有兼容性问题。

但是自从有了W3C标准,和一些极力要求通过该标准的客户,事情复杂了:

embed被认为是非法的

embed 标签是 Netscape 的私有标签,虽然 embed 标签应用广泛存在,但是从HTML3.2,HTML4.0到XHTML1.0,W3C都没有收录这个标签。使用embed 标签的页面将不能通过W3C校验。

其实他们这样考虑也是正确的,大部分西方国家的用户,正版vista系统基本上做到了普及,他们大多使用IE***/IE8.0等主流浏览器,使用这种简介的标签可以节省好几行代码:

  1. <object type="application/x-shockwave-flash" data="test.swf" width="200" height="100"> <parm name="movie" value="test.swf />

但是在盗版泛滥的中国,多数用户仍然在使用windows xp系统上自带的IE6浏览器,而它是不支持object标签的,只能使用变通的方式来解决。

目前的临时办法

既要符合标准,又想在所有浏览器正确显示flash应该怎么做?我们可以添加一段冗长的JavaScript来隐藏embed标签:

  1. function getFlashObject(flashSrc, objWidth, objHeight, etcParam) {
  2.     var tag = "";
  3.     var baseFlashDir="";
  4.     flashSrc = baseFlashDir + flashSrc;
  5.     if ( etcParam != "" || etcParam != null ) {
  6.         if ( etcParam.substr(0, 1) == "?" )
  7.             flashSrc += etcParam;
  8.         else
  9.             flashSrc += "?" + etcParam;
  10.     }
  11.     tag += ""clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" ";
  12.     tag += "codebase="http://do***ad.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" ";
  13.     tag += "width="" + objWidth + "" height="" + objHeight + "">";
  14.     tag += ""movie" value="" + flashSrc + "" />";
  15.     tag += ""quality" value="high" />";
  16.     tag += ""wmode" value="transparent" />";
  17.     tag += """ + flashSrc + "" quality="high" pluginspage="http://ww***cromedia.com/go/getflashplayer" ";
  18.     tag += "type="application/x-shockwave-flash" width="" + objWidth + "" height="" + objHeight + "" ";
  19.     tag += "wmode="transparent">";
  20.     tag += "
  21. ";
  22.     document.write(tag);
  23. }

不只如此,还需要在页面中添加若干调用该JS的参数

  1. <script language="JavaScript" type="text/javascript">getFlashObject('im***s/test.swf', '100%', '100%', '')</script>

那新的问题又出现了,如果用户禁用了javascript怎么办?

难道要先写出更多的代码,判断用户使用的是什么浏览器,然后根据浏览器再输出合适的代码?我靠,多影响页面执行效率啊,为了一个W3C标准,多那么多行代码,让每一个访问自己网站的用户多等待1秒钟?

所以我想表述的观点是:

目前,IE6普及的大环境下,暂时不要考虑W3C标准。用心做好自己的页面,能少写几行代码就少写几行代码。不要为了标准去做标准。

相关文章 最新文章

相关应用

热门文章

猜你喜欢

返回顶部