码迷,mamicode.com
首页 > 编程语言 > 详细

《JavaScript高级程序设计》第12-13章

时间:2016-01-05 00:03:47      阅读:341      评论:0      收藏:0      [点我收藏+]

标签:

第十二章 DOM2DOM3

1、DOM2DOM3模块

DOM2级核心:在1级核心的基础上构建,为节点添加了更多的方法和属性

DOM2级视图:为文档定义了基于样式信息的不同视图

DOM2级事件:说明了如何使用事件和DOM文档交互

DOM2级样式:定义了如何以编程方式来访问和改变CSS样式信息

DOM2级遍历和范围:引入了遍历DOM文档和选择其特定部分的新接口

DOM2HTML:在1HTML基础上创建,添加了更多属性、方法和新接口

DOM3XPath模块:

DOM3级加载与保存模块

2、DOM变化

3、样式

1)访问元素的样式:任何支持style特性的HTML元素在JavaScript中都有一个对应的style属性,这个style对象是CSSStyleDeclaration的实例;对于使用短划线的CSS属性名必须将其转换成驼峰大小写形式才能通过JavaScript来访问,不能直接转换的是float属性,应转换为cssFloatIE则是styleFloat

2)计算的样式:DOM2级样式增强了document.defaultView,提供了getComputedStyle()方法,接收两个参数——要取得计算样式的元素和一个伪元素字符串(如果不需要伪元素信息,则为null),返回一个CSSStyleDeclaration对象,其中包含当前元素的所有计算的样式;IE不支持getComputedStyle()方法,它有currentStyle属性

3)操作样式表:应用于文档的所有样式表是通过document.styleSheets集合来表示,通过这个集合的length属性可以获知文档中样式表的数量,而通过方括号语法或item()方法可以访问每一个样式表

4、元素大小

1)偏移量

offsetHeight:元素在垂直方向上占用的空间大小

offsetWidth:元素在水平方向上占用的空间大小

offsetLeft:元素的左外边框至包含元素的左内边框之间的像素距离

offsetTop:元素的上外边框至包含元素的上内边框之间的像素距离

2)客户区大小:元素内容及其内边距所占据的空间大小

clientWidth:元素内容区宽度加上左右内边距宽度

clientHeight:元素内容区高度加上上下内边距宽度

3)滚动大小:包含滚动内容的元素大小

scrollHeight:在没有滚动条的情况下,元素内容的总高度

scrollWidtht:在没有滚动条的情况下,元素内容的总宽度

scrollLeft:被隐藏在内容区域左侧的像素数

scrollTop:被隐藏在内容区域上侧的像素数

4)确定元素大小:getBoundingClientRect()方法确定元素在页面中相对于视口的位置,返回一个矩形对象包含四个属性——lefttoprightbottom

5、遍历:基于给定的起点对DOM结构执行深度优先

1)NodeIterator

创建NodeIteratordocument.createNodeIterator(),接收四个参数——root(搜索起点)、whatToShow(被访问节点的数字代码)、filter(一个NodeIterator对象或一个表示应该接受还是拒绝某种特定节点的函数)、entityReferenceExpansion(布尔值,表示是否要扩展实体引用)

操作NodeIteratornextNode()previousNode()方法都基于NodeIteratorDOM结构中的内部指针工作

2)TreeWalker

创建TreeWalkerdocument.TreeWalker(),接受四个参数——作为遍历起点的根节点、要显示的节点类型、过滤器和一个表示是否扩展实体引用的布尔值(同NodeIterator

操作TreeWalkernextNode()previousNode()parentNode()firstChild()lastChild()nextSibling()previousSibling

6、范围

1)创建范围:document.createRange()

2)范围属性:startContainer(范围起点)、startOffset(范围在startContainer中起点的偏移量)、endContainer(范围终点)、endOffset(范围在endContainer中终点的偏移量)、commonAncestorContainerstartContainerendContainer共同的祖先元素在节点树中位置最深的那个

3)操作范围:

selectNode()接收一个参数——一个DOM节点,选择整个节点,包括其子节点,startContainerendContainercommonAncestorContainer都等于传入节点的父节点;selectNodeContents()接收一个参数——一个DOM节点,只选择节点的子节点,startContainerendContainercommonAncestorContainer都等于传入节点;

setStart()endStart都接收两个参数——一个参照节点和一个偏移量,对setStart()来说,参照节点为startContainer,偏移量为startOffset,对setEnd()来说,参照节点为endContainer,偏移量为endOffset

deleteContents()用于从文档中删除范围所包含的内容;cloneContents()用于创建范围对象的一个副本,然后在文档的其他地方插入该副本;

insertNode()用于向范围选取的开始处插入一个节点;

collapse()用于折叠范围,接收一个参数——布尔值,值为true表示折叠到范围的起点,值为false表示折叠到范围的终点;

compareBoundaryPoints()确定这些范围是否有公共的边界(起点或终点),接收两个参数——表示比较方式的常量值和要比较的范围;cloneRange()用于创建调用它的范围的一个副本;detach()用于从创建范围的文档中分离出该范围

第十三章 事件          

1、事件流:描述的是从页面中接收事件的顺序

1)事件冒泡:事件开始时由最具体的元素接收,然后逐级向上传播到较为不具体的节点

2)事件捕获:事件开始时由不太具体的节点接收,然后逐级向下传播到最具体的元素

3)DOM事件流:经历三个阶段——事件捕获阶段、处于目标阶段和事件冒泡阶段

2、事件处理程序:事件是用户或浏览器自身执行的某种动作,响应某个事件的函数就是事件处理程序

1)HTML事件处理程序

2)DOM0级事件处理程序:为元素的事件处理程序属性设置一个函数;事件处理程序会在其所属元素的作用域内运行

3)DOM2级事件处理程序:addEventListener()removeEventListener(),都接收三个参数——要处理的事件名、作为事件处理程序的函数和一个布尔值,布尔值参数如果是true表示在捕获阶段调用事件处理程序,如果是false表示在冒泡阶段调用事件处理程序

4)IE事件处理程序(IEOpera有效):attachEvent()detachEvent(),都接收两个参数——事件处理程序名称与事件处理程序函数;由于IE及更早的版本只支持事件冒泡,所以通过attachEvent()添加的事件处理程序都会被添加到冒泡阶段;可以为一个元素添加多个事件处理程序,事件处理程序会在全局作用域中运行,因此this等于window

5)跨浏览器的事件处理程序:addHandler()用于使用DOM0级方法、DOM2级方法或IE方法来添加事件,removeHandler()用于默认使用DOM0级方法法来移除之前添加的事件,都接收三个参数——要操作的元素、事件名称和事件处理程序函数;为了保证处理事件的代码能在大多数浏览器下一致地运行,跨浏览器的事件处理程序只处理事件冒泡

3、事件对象:

1)DOM中的事件对象:

兼容DOM的浏览器会将一个event对象传入到事件处理程序中;

preventDefault()用于阻止特定事件的默认行为,前提是cancelable属性设置为truestopPropagation()用于立即停止事件在DOM层次中的传播,即取消进一步的事件捕获或冒泡;

currentTarget属性表明其事件处理程序当前正在处理事件的那个元素,始终等于thistarget属性表明事件真正的目标;eventPhase属性表明事件当前正处于事件流的哪个阶段,值为1表明事件处于捕获阶段,值为2表明事件处于目标对象上,值为3表明事件处于冒泡阶段;

2)IE中的事件对象:

如果使用DOM0级方法添加事件处理程序时,可以通过window.event取得event对象;如果使用attachEvent()时,那么会有一个event对象作为参数被传入事件处理程序函数中;如果使用HTML特性添加事件处理程序时,可以通过一个event变量来访问event对象;srcElement属性表明事件真正的目标;returnValue属性用于阻止特定事件的默认行为,值为false表明阻止;cancelBubble属性用于立即停止事件在DOM层次中的传播,即取消进一步的事件冒泡,值为true表明停止;

3)跨浏览器的事件对象:getEvent()返回对event对象的引用;getTarget()返回事件的目标,通过检测event对象的target属性,如果存在则返回该属性的值,否则返回srcElement属性的值;preventDefault()用于取消事件的默认行为,如果不存在该方法,则设置returnValue的值为falsestopPropagation()用于阻止事件流,如果不存在该方法,则设置cancelBubble的值为true

var EventUtil = {

getEvent: function(event){

        return event ? event : window.event;

    },

getTarget: function(event){

        return event.target || event.srcElement;

    },

preventDefault: function(event){

        if (event.preventDefault){

            event.preventDefault();

        } else {

            event.returnValue = false;

        }

    },

stopPropagation: function(event){

        if (event.stopPropagation){

            event.stopPropagation();

        } else {

            event.cancelBubble = true;

        }

    }

 

};

4、事件类型

1UI事件:指的是那些不一定与用户操作有关的事件

DOMactive:表明元素已经被用户操作(通过鼠标或键盘)激活;

load:当页面完全加载在window上触发;

unload:当页面完全卸载在window上触发;

abort:当用户停止下载过程时,如果嵌入的内容没有加载完,则在<object>元素上触发;

error:当发生JavaScript错误时在window上触发;

select:当用户选择文本框(<input><texterea>)中的一或多个字符时触发;

resize:当窗口或框架大小变化时在window上触发;

scroll:当用户滚动带滚动条的元素中的内容时,在该元素上面触发;

2)焦点事件:会在页面元素获得或失去焦点时触发

blur:在元素失去焦点时触发(通用);

DOMFocusIn:在元素获得焦点时触发;

DOMFocusOut:在元素失去焦点时触发;

focus:在元素获得焦点时触发(通用);

focusin:在元素获得焦点时触发;

focusout:在元素失去焦点时触发;

3)鼠标和滚轮事件

click:在用户点击主鼠标按钮或者按下回车键时触发;

dblclick:在用户双击主鼠标按钮时触发;

mousedown:在用户按下了任意鼠标按钮时触发;

mouseenter:在鼠标光标从元素外部首次移动到元素范围之内时触发;

mouseleave:在位于元素上方的鼠标光标移动到元素范围之外时触发;

mousemove:当鼠标指针在元素内部移动时重复触发;

mouseout:在鼠标指针位于一个元素上方,然后用户将其移入另一个元素时触发;

mouseover:在鼠标指针位于一个元素外部,然后用户将其首次移入另一个元素边界之内时触发;

mouseup:在用户释放鼠标按钮时触发;shiftKeyctrlKeyaltKeymetaKey

《JavaScript高级程序设计》第12-13章

标签:

原文地址:http://www.cnblogs.com/wuping/p/5100651.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!