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

CSS样式表
DIV和CSS排版中制作细线条的方法小结
在解决ul居中问题时想到的几点
网页编辑中CSS样式表技巧总结
一个老外弄的Clearing floats(清除浮动的方法)
常用的DIV+CSS的基本框架结构但不推荐都放一个div里
无js5款纯div+css制作的弹出菜单标准
超强推荐CSS打造经典鼠标触发显示选项
CSS网页布局入门教程5:二列宽度自适应
CSS网页布局入门教程6:左列固定,右列宽度自适应
CSS网页布局入门教程7:二列固定宽度居中
CSS网页布局入门教程9:用CSS设计网站导航——横向导航
CSS网页布局入门教程10:带当前标识的标签式横向导航
CSS网页布局入门教程11:带当前标识的标签式横向导航图片美化版
CSS网页布局入门教程12:纵向导航菜单
CSS网页布局入门教程13:下拉及多级弹出式菜单
CSS网页布局入门教程14:纵向下拉及多级弹出式菜单
解读css发展历史
让用户自己控制网页字体的大小的css书写方法
CSS注释、命名、继承性、样式排序等CSS技巧的小结
CSS标签切换代码实例教程 比较漂亮

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-03-17   浏览: 291 ::
收藏到网摘: 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标准。用心做好自己的页面,能少写几行代码就少写几行代码。不要为了标准去做标准。