EMACScript:一种规范,JS必须准守它的约定,JS的核心。

DOM:文档对象模型,W3C标准,JS访问HTML文档的接口。

BOM:浏览器对象模型,没有统一的标准。JS访问浏览器的接口。

EMACScript

1、什么是EMACScript?

EMACScript可以为不同种类的宿主环境提供核心的脚本编程能力

浏览器对于EMACScript来说是一个宿主环境,但并不是唯一的宿主环境。另外的宿主环境比如Flash,其上的编程语言是ActionScript.

个人理解:

1、遵循EMACScript这一标准的语言很多。因此,它只是组成JS的一部分,但也是核心部分

2、核心的脚本语言(EMACScript)与特定的宿主环境(浏览器BOM)是分开进行规定的

3、浏览器之于JavaScript,相当于Flash之于ActionScript

4、JavaScript是EMACScript在浏览器上的扩展

2、EMACScript规定了什么?

EMACScript仅仅是一个描述,定义了脚本语言的所有属性、方法和对象。其他语言,如JavaScript、ActionScript等

,将其作为功能的基准,结合不同的宿主环境进行扩展:

每个浏览器都有它自己的 ECMAScript 接口的实现,然后这个实现又被扩展,包含了 DOM 和 BOM

 3、ECMAScript 的版本

DOM

DOM(文档对象模型)是 HTML 和 XML 的应用程序接口(API)。DOM 将把整个页面规划成由节点层级构成的文档。

DOM包含12种节点,一般用前三种:元素节点[1]、属性节点[2]、文本节点[3]。

nodeType属性:当前元素的节点类型。元素.nodeType,返回类型编号,如文本节点,返回1。

子节点操作:

childNodes属性:

 <ul id-"ul">
<li>11111</li>
<li>22222</li>
<li>33333</li>
<li>44444</li>
</ul> <script>
var oUl=document.getElementById("ul");
alert(oUl.childNodes.length);
//标准情况下返回9,IE8以下返回4
//因为标准下返回的节点包括文本节点(ul下的回车换行符算一个文本节点)
</script>

childNodes属性只返回子元素节点和子元素节点下的文本节点,不返回孙级元素节点。

对于非法嵌套(ul下嵌套p)标准下,p算作子元素节点,IE7以下不算。

children属性:不包含文本元素,上述返回4,推荐使用

firstChild属性获取元素的第一个子节点,问题:标准下会包含文本节点。

解决办法:在标准下获取元素第一个子节点的属性:firstElementChild,但非标准下没有这个属性,要做好兼容处理。

if(oUl.firstElementChild){//标准下
oUl.firstElementChild.style.background='red';
}
else{ //非标准
oUl.firstChild.style.background='red';
} 更简单的兼容处理:
var oFirst=oUl.firstElementChild ||oUl.firstChild;
oFirst.style.background='red'; 更好的替换方法:
oUL.children[0].style.background='red';

类似属性

lastChild属性

lastElementChild属性

nextSibling属性

nextElementSibling属性

previousSibling属性

previousElementSibling属性

父节点操作:

parentNode属性:没有兼容问题。

offsetParent属性:返回最近的positioned父元素。存在较大的兼容性问题。

IE7以下,若当前元素不存在定位,则它的offsetParent默认是body,有定位则返回html(标准下无论是否有定位都返回body)

IE7以下,若当前元素的某个父级触发了layout(比如设置了zoom属性),则offsetParent定位到该父级

什么是layout和zoom?

layout即为布局

zoom:IE浏览器专用属性,检索或设置对象缩放比例

除此之外,它还有其他一些小作用,比如触发ie的hasLayout属性,清除浮动、清除margin的重叠等。

IE的hasLayout属性(http://blog.sina.com.cn/s/blog_57e7d45a0100vb94.html)

其他常用属性:

offsetLeft[Top]属性:

标准下:返回当前元素到最近positioned父元素的距离

IE7及以下:若当前元素无定位,则返回它到body的距离;若有定位,则返回到它最近positioned父元素的距离

各种宽度属性:

width:样式宽

clientWidth:可视区宽=样式宽+padding

offsetWidth:样式宽+padding+border

//获取元素到页面绝对距离的函数
function getPos(obj){
var pos={left:0;top:0};
while(obj){
pos.left+=obj.offsetLeft;
pos.top+=obj.offsetTop;
obj=obj.offsetParent;
}
return pos;
}  

属性操作:

//可以操作自定义属性,而一般的点操作和中括号操作无法操作自定义属性

getAttributte()

setAttributte()

removeAttributte()

元素添加方法:

appendChild()属性:父元素.appendChild(子元素)      //插入到子元素列表最后

insertBefore()属性:父元素.insertBefore(新元素,参考元素)    //插入到参考元素的前面

replaceChild()属性:父元素.replaceChild(新元素,旧元素)   //相当于剪切——粘贴,原来位置的“新元素”不存在了

removeChild()属性:父元素.removeChild(子元素)

BOM

浏览器对象模型,提供了很多对象,用于对浏览器窗口进行访问和操作,这些功能与具体网页内容无关;没有相关的标准,因此每个浏览器都有自己的BOM实现

window对象

navigator对象

screen 对象

history对象

location对象

Javascript的组成——EMACScript、DOM、BOM的更多相关文章

  1. JavaScript的组成—ECMAScript、BOM和DOM

      JavaScript 是一种基于 ECMAScript 规范的脚本语言,并在此基础上进行了自己的封装.ECMAScript 不是一种编程语言,仅仅是一种脚本语言规范,由欧洲计算机协会制定和发布,任 ...

  2. Javascript组成--ECMAScript,DOM,BOM

    ECMAScript 部分 ECMAScript是一个标准,JS只是它的一个实现,其他实现包括ActionScript; “ECMAScript可以为不同种类的宿主环境提供核心的脚本编程能力”,即EC ...

  3. 关于dom&bom

    javascript 有三部分构成,ECMAScript,DOM和BOM,根据宿主(浏览器)的不同,具体的表现形式也不尽相同,ie和其他的浏览器风格迥异. 1. DOM 是 W3C的标准:[所有浏览器 ...

  4. 什么是BOM?,什么是DOM? BOM跟DOM之间的关系

    什么是BOM? BOM是browser object model的缩写,简称浏览器对象模型.是用来获取或设置浏览器的属性.行为,例如:新建窗口.获取屏幕分辨率.浏览器版本号等. 比如 alert(); ...

  5. JavaScript大杂烩10 - 理解DOM

    操作DOM 终于到了JavaScript最为核心的部分了,通常来说,操作DOM,为页面提供更为友好的行为是JavaScript根本目标.   DOM树 - HTML结构的抽象 既然DOM是操纵HTML ...

  6. js初级DOM&BOM知识点总结

    第一章 js的组成DOM BOM ECMAScript javaScript 是一种直译是脚本语言 js语言特点 .脚本编写语言 .基于对象的语言 .简单性 .动态性 .安全性 .跨平台性 C/S是C ...

  7. 8.6 JavaScript之HTML的DOM(三)

    8.5 HTML和JavaScript的DOM(三) 一.DOM 是Document Object Model( 文档对象模型 )的缩写. DOM把所有的html都转换为节点 .整个文档 是一个节点 ...

  8. JavaScript之旅(DOM)

    JavaScript之旅(DOM) [TOC] 一.认识DOM 什么是 DOM? DOM 是 Document Object Model(文档对象模型)的缩写. DOM 是 W3C(万维网联盟)的标准 ...

  9. DOM&BOM笔记

    day01正课:1. DOM概述2. ***DOM树3. *查找 1. DOM概述: DHTML:动态网页技术的统称 DHTML=HTML+CSS+JS 鄙视题: HTML XHTML DHTML X ...

  10. 第一百四十一节,JavaScript,封装库--DOM加载

    JavaScript,封装库--DOM加载 DOM加载,跨浏览器封装DOM加载,当网页文档结构加载完毕后执行函数,不等待图片音频视频等文件加载完毕 /** dom_jia_zai()函数,DOM页面加 ...

随机推荐

  1. python数学第九天【统计】

  2. 老男孩python学习自修第十一天【内置函数】

    1.基本内置函数 help() 帮助文档 dir() 列出当前文件的所有变量和方法 vars() 列出当前文件的所有变量及其值 type() 返回变量的类型 id() 返回变量的内存地址 len() ...

  3. PHP的爬虫框架

    Beanbun PHPSpider PHPQuery QueryList PHPCrawer Snoopy

  4. PLSQL 错误问题:ora-12154:TNS:could not resolve the connect identifier

    错误问题: ORA-12154: TNS:could not resolve the connect identifier specified 即无法解析指定的连接,这说明缺少了一个环境变量,TNS_ ...

  5. How to RAMDISK on macOS

    diskutil erasevolume HFS+ 'RAM Disk' `hdiutil attach -nomount ram://8388608`

  6. hdu-3068(最长回文子串-manacher)

    题意:求一个字符串#include<iostream>#include<algorithm>#include<cstring>using namespace std ...

  7. Jquery中val方法使用的坑

    Jquery中val方法使用 val()// 取得第一个匹配元素的当前值 val(val)// 设置所有匹配元素的值 val([val1, val2])// 设置多选的checkbox.多选selec ...

  8. .net Json 反序列化时,属性带点

    .net Json 反序列化时,属性带点 使用[JsonProperty("xxx.xxx")] static void Main(string[] args) { string ...

  9. 设置服务器的MySQL允许远程访问/外网访问

    我需要在C++中连接服务器上的MySQL数据库.但是直接连接失败了,原来服务器上还要修改一下MySQL的配置. 一.服务器上的配置mysql数据库 进入mysql: mysql -uroot -p 输 ...

  10. 自学Python4.8-生成器(方式二:生成器表达式)

    自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...