当前位置: 首页 > 图文教程 > 网页制作 > CSS样式表 > ie6普及的大环境下暂时不要考虑w3c标准

CSS样式表
CSS 表单元素不继承body的字体属性
网页制作学习教程 CSS Position
网页设计学习教程 CSS盒模型
vertical-align 表单元素垂直对齐的解决方法
不用Cookie的仿刷新二级高亮菜单
CSS3 优势以及网页设计师如何使用CSS3技术
CSS 网页制作 提高CSS可阅读性
CSS 样式表中引用图片地址在各浏览器中的差异
CSS Sprite优化 减少HTTP链接数
网页制作中应用的50个CSS技巧(国外)
CSS 英文教程 CSS语法
CSS 网页文字渐变效果
纯css 圆角实现代码
CSS 新的图像替换方法
不必需的样式脚本文件导致页面不能及时更新
CSS 约定写法 利用扩展
最全的CSS浏览器兼容问题小结
CSS 网页图文混排的10个技巧
IE的CSS制作网页技巧3则
创造100% 自适应css布局的行之有效的方法

CSS样式表 中的 ie6普及的大环境下暂时不要考虑w3c标准


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-03-17   浏览: 243 ::
收藏到网摘: n/a

这问题不知道该责骂不会自动更新的ie6,还是该诅咒不懂向下兼容的w3c标准。
这是flash传统的嵌入方法:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.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://www.macromedia.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系统基本上做到了普及,他们大多使用ie7.0/ie8.0等主流浏览器,使用这种简介的标签可以节省好几行代码:
  
<object type="application/x-shockwave-flash" data="test.swf" width="200" height="100"> <parm name="movie" value="test.swf /> </object>

但是在盗版泛滥的中国,多数用户仍然在使用windows xp系统上自带的ie6浏览器,而它是不支持object标签的,只能使用变通的方式来解决。
目前的临时办法
既要符合标准,又想在所有浏览器正确显示flash应该怎么做?我们可以添加一段冗长的javascript来隐藏embed标签:
  
function getflashobject(flashsrc, objwidth, objheight, etcparam) {    
   var tag = "";    
   var baseflashdir="";    
   flashsrc = baseflashdir + flashsrc;    
   if ( etcparam != "" || etcparam != null ) {    
       if ( etcparam.substr(0, 1) == "?" )    
           flashsrc += etcparam;    
       else    
           flashsrc += "?" + etcparam;    
   }    
   tag += "<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" ";    
   tag += "codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0\" ";    
   tag += "width=\"" + objwidth + "\" height=\"" + objheight + "\">";    
   tag += "<param name=\"movie\" value=\"" + flashsrc + "\" />";    
   tag += "<param name=\"quality\" value=\"high\" />";    
   tag += "<param name=\"wmode\" value=\"transparent\" />";    
   tag += "<embed src=\"" + flashsrc + "\" quality=\"high\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" ";    
   tag += "type=\"application/x-shockwave-flash\" width=\"" + objwidth + "\" height=\"" + objheight + "\" ";    
   tag += "wmode=\"transparent\"></embed>";    
   tag += "</object>";    
   document.write(tag);    
}

不只如此,还需要在页面中添加若干调用该js的参数
  
<script language="javascript" type="text/javascript">getflashobject('images/test.swf', '100%', '100%', '')</script>

那新的问题又出现了,如果用户禁用了javascript怎么办?
难道要先写出更多的代码,判断用户使用的是什么浏览器,然后根据浏览器再输出合适的代码?我靠,多影响页面执行效率啊,为了一个w3c标准,多那么多行代码,让每一个访问自己网站的用户多等待1秒钟?
所以我想表述的观点是:
目前,ie6普及的大环境下,暂时不要考虑w3c标准。用心做好自己的页面,能少写几行代码就少写几行代码。不要为了标准去做标准。