首页 > 代码库 > 从ECMA到W3C

从ECMA到W3C

        总所周知,ECMA定义的是js的变量语法等基础的规范,而W3C是针对浏览器API提出的规范, 所以我们要工作不可能只了解语法,我们的代码要在浏览器上跑起来就需要我们去了解W3C的标准。

        那么W3C规定了哪一系列的的API呢,DOM、BOM、AJAX、事件、存储等等。document.getElementById(),这东西相信大家都非常的熟悉,有没有觉得有点疑惑的地方document这东西是什么,在js基础中并没有这么一个一个对象,而这个就是W3C提出的浏览器内置更多的对象之一,比如还有window就是对js中Global的实现,还有navigator能获取浏览器的一些数据,还有其他的就以后在介绍。

一、DOM

        DOM(Document Object Model,简称DOM),文档对象模型。 我们在了解DOM的时候,首先会了解到一个DOM树的结构,这是一种树形的数据结构。下图就是DOM文档渲染出来的DOM树。

        技术分享

        我们的js要对html进行操作,就必须要对html做处理,所以浏览器拿到之后就会对它进行结构化的处理,处理成浏览器和js能识别的东西,这就是DOM。接下来我们看看对于DOM的操作有哪些。

        DOM节点获取

1 //  获取DOM节点的操作,我们获取的节点其实本质上就是js对象
2 //  元素
3 document.getElementById();
4 //  集合
5 document.getElementsByTagName();
6 document.getElementsByName();
7 //  还有个个className但是用起来有限制
8 document.getElementsByClassName();

        针对ClassName浏览器有一定的限制。

技术分享

        还有两种获取DOM节点的方式。

1 //  元素,只返回符合条件的第一个元素
2 document.querySelector();
3 //  集合,返回符合条件的元素集合
4 document.querySelectorAll();

        我们用这些api获得的都是js的对象,对象有什么特性呢,可以自由扩展属性,我们可以看到,我们可以对拿到的节点进行操作。比如el.style可以对节点的样式进行操作,style就是这个对象的属性,还有类似getAttribute、setAttribute的方法。

       DOM结构操作 

        DOM结构的操作,就是对树的操作,也就是对节点的操作,那么就会有基本的增、删、改、查了。

1 //   新建节点,我们都知道有3种节点:元素节点、文本节点、属性节点
2 document.createElement();
3 document.createTextNode();
4 document.createAttribute();
// 向DOM树中插入节点
element.appendChild();  //这个方法还可以移动原有的节点
element.insertBefore(); 

        那么在DOM树中,获取节点的方式有哪些呢?

 1 //  获取父节点和子节点
 2 
 3 element.parentNode();
 4 element.childNodes();
 5 
 6 //  移除节点
 7 element.removeChild();  
 8 
 9 //  替换子节点
10 element.replaceChild();

二、BOM

        BOM可以提供给我们对浏览器的一些操作。在这里我们就大概的讲一讲用的比较多的东西,不详细说。

        Navigator对象:这个对象我们常用来检测浏览器的类型,移动端PC端的有些操作我们是需要的。

        location对象:这个在工作中也是经常会遇到的,我经常遇到的就是对URL的解析。

1 location.herf = ‘url地址‘
2 hash 返回#号后面的字符串,不包含散列,则返回空字符串。
3 host 返回服务器名称和端口号
4 pathname 返回目录和文件名。 /project/test.html
5 search 返回?号后面的所有值,这个在工作中,我们就会使用到去获取参数进行操作
6 port 返回URL中的指定的端口号,如URL中不包含端口号返回空字符串
7 portocol 返回页面使用的协议。 http:或https:

        screen:包含了一些屏幕大小的信息。

        history:包含我们向前或者向后的操作

        BOM的操作用到的比较少,我们就介绍到这里。

从ECMA到W3C