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. Java8 flatMap的sample

    外国人写得, 很不错 http://www.java67.com/2016/03/how-to-use-flatmap-in-java-8-stream.html package test; impo ...

  2. DataSet 取值,DataSet行数,DataSet列数 从DataSet中取出特定值

    1 DataSet.Table[0].Rows[ i ][ j ] 其中i 代表第 i 行数, j 代表第 j 列数 2 DataSet.Table[0].Rows[ i ].ItemArray[ j ...

  3. 学习Linux系统的态度及技巧

    Linux作为一种简单快捷的操作系统,现在被广泛的应用.也适合越来越多的计算机爱好者学习和使用.但是对于Linux很多人可能认为很难,觉得它很神秘,从而对其避而远之,但事实真的是这样么?linux真的 ...

  4. shiro注解和标签

    Controller中注解: @RequiresAuthentication @RequiresGuest @RequiresPermissions("account:create" ...

  5. BZOJ2212 [POI2011] Tree Rotations 【treap】

    题目分析: 写的无旋treap应该跑不过,但bzoj判断的总时限.把相关实现改成线段树合并就可以了. 代码: #include<bits/stdc++.h> using namespace ...

  6. LOJ6053 简单的函数 【Min_25筛】【埃拉托斯特尼筛】

    先定义几个符号: []:若方括号内为一个值,则向下取整,否则为布尔判断 集合P:素数集合. 题目分析: 题目是一个积性函数.做法之一是洲阁筛,也可以采用Min_25筛. 对于一个可以进行Min_25筛 ...

  7. 怎么用Verilog语言描述同步FIFO和异步FIFO

    感谢 知乎龚大佬 打杂大佬 网上几个nice的博客(忘了是哪个了....) 前言 虽然FIFO都有IP可以使用,但理解原理还是自己写一个来得透彻. 什么是FIFO? Fist in first out ...

  8. Git Bash的妙用 - 使用Linux命令

    如何在Windows中使用Linux命令? 网上有很多说是安装CygwinPortable 在cmd 窗口下是用linux 命令,但是还有一些缺陷. 其实对于程序员来说有一个非常简单有效的方法,那就是 ...

  9. Tarjan总结(缩点+割点(边)+双联通+LCA+相关模板)

    Tarjan求强连通分量 先来一波定义 强连通:有向图中A点可以到达B点,B点可以到达A点,则称为强连通 强连通分量:有向图的一个子图中,任意两个点可以相互到达,则称当前子图为图的强连通分量 强连通图 ...

  10. hiho1255 Mysterious Antiques in Sackler Museum

    题目链接:http://media.hihocoder.com/contests/icpcbeijing2015/problems.pdf 题目大意:给你四个矩形,判断是否能取其中任意三个组成一个大矩 ...