行业资讯
JavaScript-事件-BOMDOM
JavaScript-事件-BOMDOM事件(Event)事件概述javascript是一门事件驱动型语言通常服务于html页面中对于html页面中的元素必然会存在一些动作这些动作的触发称之为事件驱动。事件分类浏览器窗体事件事件名描述onload当窗体内容被加载时触发onunload当窗体中内容卸载时触发onbeforeunload当窗体内容被卸载之前触发onresize当窗体大小被改变时出发鼠标事件事件名描述onclick当鼠标单击时触发ondblclick当鼠标双击时触发onmouseover当鼠标悬停到元素上时触发onmouseout当输入从元素中移出时触发onmouseenter当鼠标进入时触发onmouseleave当鼠标离开时触发onmousedown当鼠标按下时触发onmouseup当鼠标抬起时触发键盘事件事件名描述onkeydown当键盘按键被按下时触发onkeyup当键盘按键抬起触发onkeypress当键盘按键被按压时触发表单事件事件名描述onchange当控件内容改变时触发onselect当控件内容被选中时触发onblur当控件失去焦点时触发onfocus当控件获得焦点时触发onreset表单重置时触发onsubmit表单提交时触发事件使用方式1. 直接在元素上使用onXXX属性设置事件buttononclickbtnClick()按钮/button2. 通过DOM对象为元素绑定事件常见buttonidbtn按钮/buttonscriptvarbtndocument.getElementById(btn) btn.addEventListener(click,function(){//do...})/script3.通过DOM对象获取元素后设置事件函数buttonidbtn按钮/buttonbuttonidbtn2按钮/buttonscriptvarbtndocument.getElementById(btn) btn.onclickfunction(){//do...}varbtn2document.getElementById(btn2) btn2.onclickbtnClick;functionbtnClick(){//do...}/script事件流事件冒泡和事件捕获 事件流描述的是从页面中接受事件的顺序但有意思的是早期的微软IE和网景Netscape开发团队居然提出了两个截然相反的事件流概念IE的事件流是事件冒泡流(event bubbling)而Netscape的事件流是事件捕获流(event capturing)。事件冒泡事件冒泡会从当前触发的事件目标一级一级往上传递依次触发直到document为止事件冒泡是一个由内向外触发的过程当通过元素的addEventListener方法绑定事件时默认使用不给第三个参数(默认值为false)时此时事件为冒泡机制。举例说明:!DOCTYPE htmlhtmlheadmetacharsetutf-8title/titlestyle#box1{position:relative;top:0;left:0;width:500px;height:500px;background-color:#f00;}#box2{position:absolute;left:100px;top:100px;width:300px;height:300px;background-color:#0f0;}#box3{position:absolute;left:100px;top:100px;width:100px;height:100px;background-color:#00f;}/style/headbodydividbox1box1dividbox2box2dividbox3box3/div/div/divscriptvarbox1document.getElementById(box1);varbox2document.getElementById(box2);varbox3document.getElementById(box3);box1.addEventListener(click,function(e){console.log(box1 click)})box2.addEventListener(click,function(){console.log(box2 click)})box3.addEventListener(click,function(e){console.log(box3 click);})/script/body/html事件捕获事件捕获会从document开始触发一级一级往下传递依次触发直到真正事件目标为止事件捕获是一个由外向内的触发过程当通过元素的addEventListener方法绑定事件时如果将函数的第三个参数设置为true则事件冒泡会转为事件捕获。举例说明:!DOCTYPE htmlhtmlheadmetacharsetutf-8title/titlestyle/*略*//style/headbodydividbox1box1dividbox2box2dividbox3box3/div/div/divscriptvarbox1document.getElementById(box1);varbox2document.getElementById(box2);varbox3document.getElementById(box3);box1.addEventListener(click,function(e){console.log(box1 click)},true)box2.addEventListener(click,function(){console.log(box2 click)},true)box3.addEventListener(click,function(e){console.log(box3 click);},true)/script/body/html阻止事件冒泡通过以上例子可以看出事件冒泡和事件捕获都会导致事件的同时执行如何避免事件的传播呢?因此我们可以使用以下方式实现event.cancelBubble trueevent.stopPropagation()varbox1document.getElementById(box1);varbox2document.getElementById(box2);varbox3document.getElementById(box3);box1.addEventListener(click,function(e){console.log(box1 click)})box2.addEventListener(click,function(){console.log(box2 click)})box3.addEventListener(click,function(e){console.log(box3 click);//阻止事件传播1// e.stopPropagation();//阻止事件冒泡2// e.cancelBubble true;})BOM对象BOM(Browser Object Model)浏览器对象模型与所使用的浏览器直接相关的一些内置对象目前浏览器的内核一般两个webkitgecko;BOM通常包含以下几个常见的内置对象WindowScreenLocationNavigatorHistoryDocumentwindow对象window对象提供的弹窗组件:open打开一个新窗口alert打开警告框confirm打开确认框prompt打开消息输入框screen对象screen表示屏幕信息通过screen可以获取屏幕大小以及实际可用高宽以像素为单位常用属性有以下:width获取屏幕宽度height获取屏幕高度availWidth可用宽度(减去状态栏宽度(侧边))availHeight可用高度(减去状态栏高度(底部))location对象location对象表示当前页面的url地址信息一个完整的URL地址如下:http://www.example.com:8080/path/index.html?a1b2#TOP可以用 location.href 获取。要获得URL各个部分的值可以这么写location.protocol;// httplocation.host;// www.example.comlocation.port;// 8080location.pathname;// /path/index.htmllocation.search;// ?a1b2location.hash;// TOPhistory对象history 对象保存了浏览器的历史记录JavaScript可以调用 history 对象的 back() 或 forward () 相当于用户点击了浏览器的“后退”或“前进”按钮。这个对象属于历史遗留对象对于现代Web页面来说由于大量使用AJAX和页面交互简单粗暴地调用history.back() 可能会让用户感到非常愤怒。新手开始设计Web页面时喜欢在登录页登录成功时调用 history.back() 试图回到登录前的页面。这是一种错误的方法。任何情况你都不应该使用 history 这个对象了。DOM对象DOMDocument Object Model,文档对象模型将html网页中的所有的元素当做一个对象进行操作可以通过document对象操作指定元素的属性以及行为函数HTML中将整个网页文档当做一颗倒置的文档树来理解
郑州网站建设
网页设计
企业官网