JavaScript高级程序设计(反刍) 11

第12章:

DOM2和DOM3是对DOM1的升级版本,主要的升级项在于对DOM1中方法的整合,集成了很多的方法,不必再使用DOM1中繁杂的写法,但是需要注意的是部分浏览器不支持DOM2或DOM3的某些方法/属性。

判断浏览器是否支持DOM2或DOM3的某个属性,使用
var a = document.implementation.hasFeature(“方法/属性”, “2.0/3.0”);

使用xmlns特性指定命名空间不必担心命名冲突,但是在实际中用处不大。这种方法的主要应用在于:当一个文档中存在多个语言编写时,直接在文档中指出xmlns的命名空间即可。

DOM2中的Node也进一步变化:
localName:不带命名空间前缀的节点名称
namespaceURI:命名空间URI或者null
perfix:命名空间前缀或null
NodeName = perfix +”:”+ localName
(里面的很多东西个人觉得用处不大,也没有细看,因为DOM2和DOM3在现在的浏览器中支持的并不完整,所以大多数时候个人更倾向于DOM1中的属性/方法)

样式:
使用前依旧要先判断一遍hasFeature(“CSS”, “2.0”); / hasFeature(“CSS2”, “2.0”);

CSS中的样式和JavaScript中的样式写法不同,凡是使用短线连接的复合样式,在JavaScript中一律使用小驼峰的写法,但是存在一个特殊的属性float,该样式是JavaScript中的保留字,所以在JavaScript中将该样式使用cssFloat属性,IE中使用styleFloat属性。

当使用JavaScript设置长宽时,混杂模式下,直接写出数字,不加单位,单位默认为px,但是标准模式下,不加单位,该值会被忽略。推荐大家养成良好的编码习惯。

DOM2也为style对象定义了很多的属性和方法:
cssText属性:获取元素的样式,可读可写,但是写的时候会完全覆盖原来的样式
length属性:获取元素样式的个数
getPropertyValue()方法:将CSS样式转换为JavaScript样式,字符串转换
item()方法:返回给定位置CSS属性的名称

计算样式:使用document.defaultView.getComputedStyle()方法,给定两个参数,第一个参数是元素名,第二个参数是伪元素字符串 / null(一般为null)
IE中使用currentStyle属性,可以直接获取计算样式,但是需要注意,所有的计算样式都是只读的,并非可读可写的!

元素大小:
偏移量
偏移量

function getElementLeft(element){
    var actualLeft = element.offsetLeft;
    var current = element.offsetParent;
    while(current !== null){              //这里判断当循环到的元素外面为空的时候,也就是到达了最外面一层元素的时候,停止循环
       actualLeft += current.offsetLeft;  //左侧长度累计
       current = current.offsetParent;    //获得自己的父级元素
     }
     return actualLeft;
}

function getElementTop(element){
    var actualTop = element.offsetTop;
    var current = element.offsetParent;
    while(current !== null){   
       actualTop += current.offsetTop;  
       current = current.offsetParent;  
    }
    return actualTop;
}

客户区大小:
客户区大小
这里的clientWidth和clientHight属性获取客户区大小使用document.元素.clientWidth(IE7之前使用),或者document.docuementElement.clientWidth

扫描二维码关注公众号,回复: 12468062 查看本文章

遍历:
DOM2的结构遍历使用NodeIterator和TreeWalker两种类型进行深度优先遍历
使用document.createNodeIterator()方法即可创建它的新实例,主要的属性:
root:搜索起点的树中的节点
NodeFilter.SHOW_ALL:显示所有类型的节点
NodeFilter.SHOW_LEMENT:显示元素节点
NodeFilter.SHOW_TEXT:显示文本节点
NodeFilter.SHOW_COMMENT:显示注释节点
NodeFilter.SHOW_DOCUMENT:显示文档节点

(关于后面的范围,个人觉得没什么作用,也没有细看,感兴趣的同学可以去原书的P332看看)

猜你喜欢

转载自blog.csdn.net/Feng_ye__/article/details/89850573
今日推荐