高级事件----笔记
1.ie的事件捕获 obj.setCapture(); 释放捕获 obj.releaseCapture(); 可以解决拖拽过程中在IE下选中文字或者图片的情况
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <style> #div1{ position:absolute; width:10px; height:10px; right:0; bottom:0; background-color:red;} #box{ position:relative; width:300px; height:300px; background-color:gray;} </style> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script type="text/javascript"> window.onload=function() { var oDiv = document.getElementById("div1"); oDiv.onmousedown=function(ev) { //alert("dddd"); var oEvent =ev||event; var distX = oEvent.clientX-oDiv.offsetLeft; var distY = oEvent.clientY-oDiv.offsetTop; var oBox = document.getElementById("box"); //document.title=distX+" "+distY; if(oDiv.setCapture) { oDiv.onmousemove=fnMove; oDiv.onmouseup=fnUp; oDiv.setCapture(); //事件捕获 } else { document.onmousemove=fnMove; document.onmouseup=fnUp; } function fnMove(ev) { var oEvent = ev||event; var x = oEvent.clientX-distX; var y = oEvent.clientY-distY; oDiv.style.left=x+"px"; oDiv.style.top=y+"px"; oBox.style.width=x+oDiv.offsetWidth+"px"; oBox.style.height=y+oDiv.offsetHeight+"px"; }; function fnUp() { this.onmousemove=null; this.onmouseup=null; if(this.releaseCapture) { this.releaseCapture(); //如果有释放事件捕获,那么释放事件捕获 } }; return false; }; }; </script> </head> <body> <div id="box"> <div id="div1"></div> </div> </body> </html>
2.自定义滚动条,主要是按百分比,滚动条的高度是
滚动条大小/滚动条的活动范围 = 视口的大小/文档的大小
原理是先求出scale(滚动条在滚动范围的比列),然后乘文档大小,就得到文本内容的位置
3.普通事件 onclick onmousedown onmouseover onmouseout......
DOM事件 DOMMouseScroll
DOM事件只能通过添加事件函数绑定,而不能通过obj.onsEv=function(){} 这种方式绑定
对于鼠标滚轮事件 attachEvent addEventListener onmousewheel DOMMouseScroll
IE yes no yes no
FF no yes no yes
chrome no yes yes no
要制作滚轮兼容方式:
function myAddEvent(obj,sEv,fn) { if(obj.attachEvent) { obj.attachEvent("on"+sEv,function(){ fn.call(obj); }); } else { obj.addEventListener(sEv,fn,false); } } myAddEvent(obj,"mousewheel",fn); myAddEvent(obj,"DOMMouseScroll",fn); 当用这种方式加方法时,当浏览器不支持其中的方法时,就不执行,而不会报错
4.要确定向上滚动还是向下滚动
function mousewheel(ev) { var bDown=true; var t; var oEvent =ev||event; if(oEvent.detail) { if(oEvent.detail>0) //FF用oEvent.detail来取得滚动事件的详细信息 向上滚动是负的,向下滚动是正的 { bDown=true; } else { bDown=false; } } else { if(oEvent.wheelDelta<0) //IE和CHROME用oEvent.wheelDelta来取得滚动事件的详细,向上滚动是正的,向下滚动是负的 { bDown=true; } else { bDown=false; } } //bDown=oEvent.wheelDelta?oEvent.wheelDelta<0:oEvent.detail>0; 可以通过这种方式来简写 }
可以定义一个bDown的布尔值来确定
5.FF中用addEventListener来绑定事件的时候,要阻止默认的行为用oEvent.preventDefault();
6.用removeEventListener或者detachEvent来删除事件时,如果函数参数是两个匿名函数的话,就算长得一模一样,也不能删除
var a = new Function("alert('a')");
var b = new Function("alert('a')");
alert(a==b);
结果是false ,一样的道理。
7.完整自定义滚动条代码如下
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <style> *{ margin:0; padding:0;} body{ width:700px; height:550px; overflow:hidden; margin:50px auto;} #txt1{ width:640px; height:458px; border:1px solid black; position:relative; overflow:hidden; float:left;} #txt2{ padding:5px; line-height:20px; position:absolute;} #div1{ width:17px; height:472px; position:relative; background:url(scroll_ball_y.gif) repeat-y; float:right;} #span1{ width:17px; height:24px; position:absolute; top:-20px; left:0; overflow:hidden; background:url(scroll_ball_y.gif) -76px 0 no-repeat; display:inline-block;} #span2{ width:17px; height:24px; position:absolute; bottom:-20px; left:0; overflow:hidden; background:url(scroll_ball_y.gif) -76px -90px no-repeat; display:inline-block;} #div2{ width:17px; height:48px; overflow:hidden; background:url(scroll_ball_y.gif) -18px 0 repeat-y; position:absolute;} </style> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script type="text/javascript"> function myAddEvent(obj,sEv,fn) { if(obj.attachEvent) { obj.attachEvent("on"+sEv,function(){ fn.call(obj); }); } else { obj.addEventListener(sEv,fn,false); } } window.onload=function() { var distY; var oTxt1 = document.getElementById("txt1"); var oTxt2 = document.getElementById("txt2"); var oDiv1 = document.getElementById("div1"); var oDiv2 = document.getElementById("div2"); var scale = oTxt1.offsetHeight/oTxt2.offsetHeight; oDiv2.style.height=scale*oDiv1.offsetHeight+"px"; oDiv2.onmousedown=function(ev) { var oEvent = ev||event; distY = oEvent.clientY-oDiv2.offsetTop; document.onmousemove=scrollBar; document.onmouseup=function(ev) { document.onmousemove=null; document.onmouseup=null; }; return false; }; function scrollBar(ev) { var oEvent = ev||event; var y = oEvent.clientY-distY; if(y<0) { y=0; } else if(y>oDiv1.offsetHeight-oDiv2.offsetHeight) { y=oDiv1.offsetHeight-oDiv2.offsetHeight } oDiv2.style.top=y+"px"; var scale = (oDiv2.offsetTop+oDiv2.offsetHeight)/oDiv1.offsetHeight; oTxt2.style.top=-scale*(oTxt2.offsetHeight-oTxt1.offsetHeight)+"px"; } myAddEvent(document,"mousewheel",mousewheel); myAddEvent(document,"DOMMouseScroll",mousewheel); function mousewheel(ev) { var bDown=true; var t; var oEvent =ev||event; if(oEvent.detail) { if(oEvent.detail>0) { bDown=true; } else { bDown=false; } } else { if(oEvent.wheelDelta<0) { bDown=true; } else { bDown=false; } } if(bDown) { t=oDiv2.offsetTop+3; } else { t=oDiv2.offsetTop-3; } if(t<0) { t=0; } else if(t>oDiv1.offsetHeight-oDiv2.offsetHeight) { t=oDiv1.offsetHeight-oDiv2.offsetHeight } oDiv2.style.top=t+"px"; var scale = (oDiv2.offsetTop+oDiv2.offsetHeight)/oDiv1.offsetHeight; oTxt2.style.top=-scale*(oTxt2.offsetHeight-oTxt1.offsetHeight)+"px"; } }; </script> </head> <body> <div id="div1"> <span id="span1"></span> <span id="span2"></span> <div id="div2"></div> </div> <div id="txt1"> <div id="txt2"> 妙味培训理念: 别吹嘘自己技术有多牛,没有好的创意,再牛的技术,配合着平庸的想法,那做出来的东西,又算什么? 技术存在的价值,是为了实现创意,技术一定是为创意而生! 我们为了实现那些绝妙的想法,才愿意动手敲写代码。 而对于新手来说,或许不缺少好的创意,而是缺少实现手段。 所以我们想对新手们说: 希望你们尽可能保持好自己的创意思维,通过系统化学习之后,将创意实现! 我们会把自己的项目经验融入到课程中,系统的讲解出来,让新手少走些弯路, 千万别对着错误的方向努力,而是朝着实实在在的目的地,狠劲的向前冲! 因此,我们能做的,仅仅是可以帮助你们快速的学习,或者是让你们熟练掌握某些技术,找到一份合适的工作。 另外,假如你的学习时间充足,喜欢自己研究,遇到难题时经过自己的努力,能将问题解决,那么恭喜你,你完全可以自学成功! 这里列出我们的一些后期服务,希望对学员有实际的帮助: 培训后期服务一 每位学员结课以后,我们将提供至少三个月的课程练习指导,可以通过 QQ、电话 或 当面辅导的方式,来帮助学员解决实际工作的各种问题,以使学员的知识点掌握得更彻底。 培训后期服务二 即使过了三个月,我们也不会把学员置之不理^_^,因为我们觉得,经过了三个月的实战练习,学员们的水平也会达到一个相当熟练的程度,这时候的指导就不需要再对某个知识点进行详细的讲解,而只用给学员讲解一些思路,一些工作经验方面的东西,学员在这个阶段,需要这种辅导形式,我们会将这种状态一直保持下去…… 培训后期服务三 针对有些学员没有在 IT 行业就职的情况,也可能没有工作经验,我们会在每个学员结业以后,为学员提供:简历撰写指导、网上筛选工作岗位指导、发送简历方式指导、求职面试问题指导、面试过后用人单位问题解答等一系列实际问题的服务。另外如有用人单位招聘的信息,我们也会根据每位学员掌握知识点程度的不同,而分别推荐给用人单位。 请注意:妙味课堂提供的 培训后期服务 是终生性质的,并且是免费的^_^。 嗯~就是这么回事,希望可以帮你们做出最合适的选择。 妙味课堂大事记: 2007年12月07日 - 妙味课堂在北京知春路成立 2008年05月14日 - 妙味课堂研发完成“XHTML+CSS 精品课程” 2009年12月01日 - 妙味课堂完成第一版网站 2010年05月28日 - 石川加入妙味课堂 2010年08月07日 - 妙味课堂第二版网站正式上线 2010年08月28日 - 妙味课堂研发完成“高级WEB前端工程师课程” 2010年10月01日 - 妙味课堂迁入新地址:朝阳区立水桥城铁站A口出-奥北南区3号楼1单元1507室 2011年02月21日 - 妙味课堂迁入新地址:北京市朝阳区 立水桥 明天第一城(7号院)3号楼1单元305室 2011年07月11日 - 妙味课堂迁入新地址:北京市海淀区 二里庄 智诚物业院内 2011年10月30日 - 妙味课堂迁入新地址:北京市朝阳区 天通苑 西二区 2012年08月13日 - 妙味课堂迁入新地址:北京市朝阳区 立水桥 北方明珠3号楼2003室 妙味培训理念: 别吹嘘自己技术有多牛,没有好的创意,再牛的技术,配合着平庸的想法,那做出来的东西,又算什么? 技术存在的价值,是为了实现创意,技术一定是为创意而生! 我们为了实现那些绝妙的想法,才愿意动手敲写代码。 而对于新手来说,或许不缺少好的创意,而是缺少实现手段。 所以我们想对新手们说: 希望你们尽可能保持好自己的创意思维,通过系统化学习之后,将创意实现! 我们会把自己的项目经验融入到课程中,系统的讲解出来,让新手少走些弯路, 千万别对着错误的方向努力,而是朝着实实在在的目的地,狠劲的向前冲! 因此,我们能做的,仅仅是可以帮助你们快速的学习,或者是让你们熟练掌握某些技术,找到一份合适的工作。 另外,假如你的学习时间充足,喜欢自己研究,遇到难题时经过自己的努力,能将问题解决,那么恭喜你,你完全可以自学成功! 这里列出我们的一些后期服务,希望对学员有实际的帮助: 培训后期服务一 每位学员结课以后,我们将提供至少三个月的课程练习指导,可以通过 QQ、电话 或 当面辅导的方式,来帮助学员解决实际工作的各种问题,以使学员的知识点掌握得更彻底。 培训后期服务二 即使过了三个月,我们也不会把学员置之不理^_^,因为我们觉得,经过了三个月的实战练习,学员们的水平也会达到一个相当熟练的程度,这时候的指导就不需要再对某个知识点进行详细的讲解,而只用给学员讲解一些思路,一些工作经验方面的东西,学员在这个阶段,需要这种辅导形式,我们会将这种状态一直保持下去…… 培训后期服务三 针对有些学员没有在 IT 行业就职的情况,也可能没有工作经验,我们会在每个学员结业以后,为学员提供:简历撰写指导、网上筛选工作岗位指导、发送简历方式指导、求职面试问题指导、面试过后用人单位问题解答等一系列实际问题的服务。另外如有用人单位招聘的信息,我们也会根据每位学员掌握知识点程度的不同,而分别推荐给用人单位。 请注意:妙味课堂提供的 培训后期服务 是终生性质的,并且是免费的^_^。 嗯~就是这么回事,希望可以帮你们做出最合适的选择。 妙味课堂大事记: 2007年12月07日 - 妙味课堂在北京知春路成立 2008年05月14日 - 妙味课堂研发完成“XHTML+CSS 精品课程” 2009年12月01日 - 妙味课堂完成第一版网站 2010年05月28日 - 石川加入妙味课堂 2010年08月07日 - 妙味课堂第二版网站正式上线 2010年08月28日 - 妙味课堂研发完成“高级WEB前端工程师课程” 2010年10月01日 - 妙味课堂迁入新地址:朝阳区立水桥城铁站A口出-奥北南区3号楼1单元1507室 2011年02月21日 - 妙味课堂迁入新地址:北京市朝阳区 立水桥 明天第一城(7号院)3号楼1单元305室 2011年07月11日 - 妙味课堂迁入新地址:北京市海淀区 二里庄 智诚物业院内 2011年10月30日 - 妙味课堂迁入新地址:北京市朝阳区 天通苑 西二区 2012年08月13日 - 妙味课堂迁入新地址:北京市朝阳区 立水桥 北方明珠3号楼2003室 妙味培训理念: 别吹嘘自己技术有多牛,没有好的创意,再牛的技术,配合着平庸的想法,那做出来的东西,又算什么? 技术存在的价值,是为了实现创意,技术一定是为创意而生! 我们为了实现那些绝妙的想法,才愿意动手敲写代码。 而对于新手来说,或许不缺少好的创意,而是缺少实现手段。 所以我们想对新手们说: 希望你们尽可能保持好自己的创意思维,通过系统化学习之后,将创意实现! 我们会把自己的项目经验融入到课程中,系统的讲解出来,让新手少走些弯路, 千万别对着错误的方向努力,而是朝着实实在在的目的地,狠劲的向前冲! 因此,我们能做的,仅仅是可以帮助你们快速的学习,或者是让你们熟练掌握某些技术,找到一份合适的工作。 另外,假如你的学习时间充足,喜欢自己研究,遇到难题时经过自己的努力,能将问题解决,那么恭喜你,你完全可以自学成功! 这里列出我们的一些后期服务,希望对学员有实际的帮助: 培训后期服务一 每位学员结课以后,我们将提供至少三个月的课程练习指导,可以通过 QQ、电话 或 当面辅导的方式,来帮助学员解决实际工作的各种问题,以使学员的知识点掌握得更彻底。 培训后期服务二 即使过了三个月,我们也不会把学员置之不理^_^,因为我们觉得,经过了三个月的实战练习,学员们的水平也会达到一个相当熟练的程度,这时候的指导就不需要再对某个知识点进行详细的讲解,而只用给学员讲解一些思路,一些工作经验方面的东西,学员在这个阶段,需要这种辅导形式,我们会将这种状态一直保持下去…… 培训后期服务三 针对有些学员没有在 IT 行业就职的情况,也可能没有工作经验,我们会在每个学员结业以后,为学员提供:简历撰写指导、网上筛选工作岗位指导、发送简历方式指导、求职面试问题指导、面试过后用人单位问题解答等一系列实际问题的服务。另外如有用人单位招聘的信息,我们也会根据每位学员掌握知识点程度的不同,而分别推荐给用人单位。 请注意:妙味课堂提供的 培训后期服务 是终生性质的,并且是免费的^_^。 嗯~就是这么回事,希望可以帮你们做出最合适的选择。 妙味课堂大事记: 2007年12月07日 - 妙味课堂在北京知春路成立 2008年05月14日 - 妙味课堂研发完成“XHTML+CSS 精品课程” 2009年12月01日 - 妙味课堂完成第一版网站 2010年05月28日 - 石川加入妙味课堂 2010年08月07日 - 妙味课堂第二版网站正式上线 2010年08月28日 - 妙味课堂研发完成“高级WEB前端工程师课程” 2010年10月01日 - 妙味课堂迁入新地址:朝阳区立水桥城铁站A口出-奥北南区3号楼1单元1507室 2011年02月21日 - 妙味课堂迁入新地址:北京市朝阳区 立水桥 明天第一城(7号院)3号楼1单元305室 2011年07月11日 - 妙味课堂迁入新地址:北京市海淀区 二里庄 智诚物业院内 2011年10月30日 - 妙味课堂迁入新地址:北京市朝阳区 天通苑 西二区 2012年08月13日 - 妙味课堂迁入新地址:北京市朝阳区 立水桥 北方明珠3号楼2003室 妙味培训理念: 别吹嘘自己技术有多牛,没有好的创意,再牛的技术,配合着平庸的想法,那做出来的东西,又算什么? 技术存在的价值,是为了实现创意,技术一定是为创意而生! 我们为了实现那些绝妙的想法,才愿意动手敲写代码。 而对于新手来说,或许不缺少好的创意,而是缺少实现手段。 所以我们想对新手们说: 希望你们尽可能保持好自己的创意思维,通过系统化学习之后,将创意实现! 我们会把自己的项目经验融入到课程中,系统的讲解出来,让新手少走些弯路, 千万别对着错误的方向努力,而是朝着实实在在的目的地,狠劲的向前冲! 因此,我们能做的,仅仅是可以帮助你们快速的学习,或者是让你们熟练掌握某些技术,找到一份合适的工作。 另外,假如你的学习时间充足,喜欢自己研究,遇到难题时经过自己的努力,能将问题解决,那么恭喜你,你完全可以自学成功! 这里列出我们的一些后期服务,希望对学员有实际的帮助: 培训后期服务一 每位学员结课以后,我们将提供至少三个月的课程练习指导,可以通过 QQ、电话 或 当面辅导的方式,来帮助学员解决实际工作的各种问题,以使学员的知识点掌握得更彻底。 培训后期服务二 即使过了三个月,我们也不会把学员置之不理^_^,因为我们觉得,经过了三个月的实战练习,学员们的水平也会达到一个相当熟练的程度,这时候的指导就不需要再对某个知识点进行详细的讲解,而只用给学员讲解一些思路,一些工作经验方面的东西,学员在这个阶段,需要这种辅导形式,我们会将这种状态一直保持下去…… 培训后期服务三 针对有些学员没有在 IT 行业就职的情况,也可能没有工作经验,我们会在每个学员结业以后,为学员提供:简历撰写指导、网上筛选工作岗位指导、发送简历方式指导、求职面试问题指导、面试过后用人单位问题解答等一系列实际问题的服务。另外如有用人单位招聘的信息,我们也会根据每位学员掌握知识点程度的不同,而分别推荐给用人单位。 请注意:妙味课堂提供的 培训后期服务 是终生性质的,并且是免费的^_^。 嗯~就是这么回事,希望可以帮你们做出最合适的选择。 妙味课堂大事记: 2007年12月07日 - 妙味课堂在北京知春路成立 2008年05月14日 - 妙味课堂研发完成“XHTML+CSS 精品课程” 2009年12月01日 - 妙味课堂完成第一版网站 2010年05月28日 - 石川加入妙味课堂 2010年08月07日 - 妙味课堂第二版网站正式上线 2010年08月28日 - 妙味课堂研发完成“高级WEB前端工程师课程” 2010年10月01日 - 妙味课堂迁入新地址:朝阳区立水桥城铁站A口出-奥北南区3号楼1单元1507室 2011年02月21日 - 妙味课堂迁入新地址:北京市朝阳区 立水桥 明天第一城(7号院)3号楼1单元305室 2011年07月11日 - 妙味课堂迁入新地址:北京市海淀区 二里庄 智诚物业院内 2011年10月30日 - 妙味课堂迁入新地址:北京市朝阳区 天通苑 西二区 2012年08月13日 - 妙味课堂迁入新地址:北京市朝阳区 立水桥 北方明珠3号楼2003室 妙味培训理念: 别吹嘘自己技术有多牛,没有好的创意,再牛的技术,配合着平庸的想法,那做出来的东西,又算什么? 技术存在的价值,是为了实现创意,技术一定是为创意而生! 我们为了实现那些绝妙的想法,才愿意动手敲写代码。 而对于新手来说,或许不缺少好的创意,而是缺少实现手段。 所以我们想对新手们说: 希望你们尽可能保持好自己的创意思维,通过系统化学习之后,将创意实现! 我们会把自己的项目经验融入到课程中,系统的讲解出来,让新手少走些弯路, 千万别对着错误的方向努力,而是朝着实实在在的目的地,狠劲的向前冲! 因此,我们能做的,仅仅是可以帮助你们快速的学习,或者是让你们熟练掌握某些技术,找到一份合适的工作。 另外,假如你的学习时间充足,喜欢自己研究,遇到难题时经过自己的努力,能将问题解决,那么恭喜你,你完全可以自学成功! 这里列出我们的一些后期服务,希望对学员有实际的帮助: 培训后期服务一 每位学员结课以后,我们将提供至少三个月的课程练习指导,可以通过 QQ、电话 或 当面辅导的方式,来帮助学员解决实际工作的各种问题,以使学员的知识点掌握得更彻底。 培训后期服务二 即使过了三个月,我们也不会把学员置之不理^_^,因为我们觉得,经过了三个月的实战练习,学员们的水平也会达到一个相当熟练的程度,这时候的指导就不需要再对某个知识点进行详细的讲解,而只用给学员讲解一些思路,一些工作经验方面的东西,学员在这个阶段,需要这种辅导形式,我们会将这种状态一直保持下去…… 培训后期服务三 针对有些学员没有在 IT 行业就职的情况,也可能没有工作经验,我们会在每个学员结业以后,为学员提供:简历撰写指导、网上筛选工作岗位指导、发送简历方式指导、求职面试问题指导、面试过后用人单位问题解答等一系列实际问题的服务。另外如有用人单位招聘的信息,我们也会根据每位学员掌握知识点程度的不同,而分别推荐给用人单位。 请注意:妙味课堂提供的 培训后期服务 是终生性质的,并且是免费的^_^。 嗯~就是这么回事,希望可以帮你们做出最合适的选择。 妙味课堂大事记: 2007年12月07日 - 妙味课堂在北京知春路成立 2008年05月14日 - 妙味课堂研发完成“XHTML+CSS 精品课程” 2009年12月01日 - 妙味课堂完成第一版网站 2010年05月28日 - 石川加入妙味课堂 2010年08月07日 - 妙味课堂第二版网站正式上线 2010年08月28日 - 妙味课堂研发完成“高级WEB前端工程师课程” 2010年10月01日 - 妙味课堂迁入新地址:朝阳区立水桥城铁站A口出-奥北南区3号楼1单元1507室 2011年02月21日 - 妙味课堂迁入新地址:北京市朝阳区 立水桥 明天第一城(7号院)3号楼1单元305室 2011年07月11日 - 妙味课堂迁入新地址:北京市海淀区 二里庄 智诚物业院内 2011年10月30日 - 妙味课堂迁入新地址:北京市朝阳区 天通苑 西二区 2012年08月13日 - 妙味课堂迁入新地址:北京市朝阳区 立水桥 北方明珠3号楼2003室 </div> </div> </body> </html>