Web technology for developers   Web 技术文档

备注:本文介绍web technology的分类,各自职责,因为之前一直就没有搞明白各种技术、各种名词究竟是属于哪个范畴的。

Web technology 总体概况如下:

HTML,CSS不做说明,主要解释下其他内容。

JavaScript

JavaScript由三部分组成:EMCAScript、DOM、BOM。

  • ECMAScript,由ECMAScript定义,提供核心语言功能。
  • DOM,提供访问和操作网页内容的方法和接口。
  • BOM,提供与浏览器交互的方法和接口。

JS只是一门语言,功能取决于运行环境。

操作DOM是JS跑在浏览器这个Context下的其中一部分API。

浏览器还有BOM接口用来操作非DOM的接口。
当JS跑在其他Context下就是其他功能了,比如Node.js中就拥有了文件操作等一大堆系统API。

DOM

The Document Object Model (DOM) is a programming interface for HTML, XML and SVG documents. It provides a structured representation(结构化的描述) of the document as a tree. The DOM defines methods that allow access to the tree, so that they can change the document structure, style and content. The DOM provides a representation of the document as a structured group of nodes and objects, possessing various properties and methods. Nodes can also have event handlers attached to them, and once an event is triggered, the event handlers get executed. Essentially, it connects (从本质上说,它将 web 页面和脚本或编程语言连接起来了)web pages to scripts or programming languages.

Although the DOM is often accessed using JavaScript, it is not a part of the JavaScript language. It can also be accessed by other languages.

HTML DOM 定义了访问和操作 HTML 文档的标准。

HTML DOM 定义了所有 HTML 元素的对象和属性,以及访问它们的方法。

换言之,HTML DOM 是关于如何获取、修改、添加或删除 HTML 元素的标准。

通过 HTML DOM,树中的所有节点均可通过 JavaScript 进行访问。所有 HTML 元素(节点)均可被修改,也可以创建或删除节点。

DOM 方法

Element

The Element interface represents an object of a Document. This interface describes methods and properties common to all kinds of elements.(Element接口是是适应于任何的元素)

Specific behaviors are described in interfaces which inherit from Element but add additional functionality. For example, the HTMLElement interface is the base interface for HTML elements, while the SVGElement interface is the basis for all SVG elements.

Element 属性

Parentnode.children

返回父节点的子节点集合。

Element.className

gets or sets the value of the class attribute of the specified element.

Element.clientHeight    Element.clientWidth

获取元素

document.getElementById()

document.getElementsByTagName()

返回节点列表

document.getElementsByName()  

返回节点列表

document.getElementsByClassName()

返回节点列表

createElement()

var reference = document.createElement(elementName);

方法的返回值指向新建节点的引用,返回值是一个元素节点,所以nodeType 为1 4、新建的 
节点不会自动添加到文档里,只是存在于document里一个游离的对象

createTextNode()

Element方法

getAttribute()

attributeValue = element.getAttribute(attributeName)

setAttribute()

element.setAttribute(attributeName,attributeValue);

属性的名字和值必须以字符串的形式传递
如果这个属性已经存在,那么值将被attributeValue取代
如果这个属性不存在,那么先创建它,再给他赋值

innerHTML

Node属性

nodeName

1.如果节点是元素节点,nodeName返回元素的名称
2.如果给定节点为属性节 点,nodeName返回属性的名称
3.如果给定节点为文本节点,nodeName返回为#text的字符串
nodeType

1、元素节点类型 值为1
2、属性节点类型 值为2
3、文本节点类型 值为3
nodeValue

1.如果给定节点是属性节点,返回值是这个属性的值
2.如果给定节点是文本节点,返回值是这个文本节点的内容
3.如果给定节点是元素节点,返回值是null

childnodes

返回一个数组

firstChild

lastChild

previousSibling

nextSibling

parentNode

nodelist.length  

返回节点列表长度

Node方法

hasChildNodes()

返回布尔值,看是否有子节点

replaceChild()

reference = element.replaceChild(newChild,oldChild)

返回值指向已经被替换掉的那个子节点的引用

appendChild()

newreference = element.appendChild(newChild)

给定子节点newChild将成为element的最后一个节点, 方法的返回值指向新增节点的引用

insertBefore()

var reference = element.insertBefore(newNode,targetNode)

newNode节点将作为element的子节点出现,并在targetNode节点的前面

节点targetNode必须是element的一个子节点

removeChild()

var reference = element.removeChild(node)
返回值指向已经被删除的子节点的引用
当某个子节点被删除时,这个子节点所包含的子节点也被删除掉

BOM

Javascript之BOM(window对象)   什么是BOM

ECMAScript是JavaScript的核心,但如果要在web中使用JavaScript,那么BOM(浏览器对象模型)才是真正的核心。(《高程三P193》)

BOM的核心对象是window,它表示浏览器的一个实例。

在浏览器中,window对象既是JavaScript访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象。也就是说,在网页中定义的任何一个变量、对象和函数以window作为其Global对象。

什么是BOM?

  • BOM是browser object model的缩写,简称浏览器对象模型
  • BOM提供了很多对象,用于访问浏览器的功能,这些功能任何网页内容无关
  • 由于BOM主要用于管理窗口与窗口之间的通讯,因此其核心对象是window
  • BOM由一系列相关的对象构成,并且每个对象都提供了很多方法与属性
  • BOM缺乏标准,JavaScript语法的标准化组织是ECMA,DOM的标准化组织是W3C
  • BOM最初是Netscape浏览器标准的一部分

在BOM章节中你将学到什么

BOM教程中,同学们将学到与浏览器窗口交互的一些对象,例如可以移动,调整浏览器大小的window对象,可以用于导航的location对象与history对象,可以获取浏览器,操作系统与用户屏幕信息的navigator与screen对象,可以使用document作为访问HTML文档的入口,管理框架的frames对象等

window对象是BOM的顶层(核心)对象,所有对象都是通过它延伸出来的,也可以称为window的子对象

由于window是顶层对象,因此调用它的子对象时可以不显示的指明window对象

全局作用域

既然window对象扮演着ECMAScript中Global对象的角色,那么所有在全局作用域中声明的对象、变量和函数都会变成window的属性和方法。

 var age=28;                                  // 定义全局变量和在window对象上定义属性还是有差别的:全局变量不能通过delete删除,而在window对象上定义的属性则可以。
window.color="red"; // var语句添加window属性时,有一个名为[[Configurable]]的特性,这个特性的值被设置为false,因此这样定义的属性不可以通过delete删除。
//在IE<9是抛出错误,在其他浏览器中都返回false
delete window.age;
//在IE<9是抛出错误,在其他浏览器中都返回true
delete window.color; //return true alert(window.age); //28
alert(window.color); //undefined

窗口关系及框架

Returns the window itself, which is an array-like object, listing the direct sub-frames of the current window.

对于在一个框架中编写的任何代码来说,其中的window对象指向的都是那个框架的实例。

如果页面中包含框架,则每个框架都有自己的window对象,并保存在frames集合中。

与window对象有关的有top,parent,self对象   Js中的 window.parent , window.top, window.self 详解

WebAPIs

WEB 技术分类 Javascript DOM(Element Node) BOM的更多相关文章

  1. 【转载】跟随 Web 标准探究DOM -- Node 与 Element 的遍历

    跟随 Web 标准探究DOM -- Node 与 Element 的遍历 这个是 Joyee 2014年更新的,可能是转战github缘故,一年多没有跟新了.这篇感觉还挺全面,就转载过来,如以前文章一 ...

  2. 跟随 Web 标准探究DOM -- Node 与 Element 的遍历

    写在前面 这篇没有什么 WebKit 代码的分析,因为……没啥好分析的,在实现里无非就是树的(先序DFS)遍历而已,囧哈哈哈……在WebCore/dom/Node.h , WebCore/dom/Co ...

  3. JavaScript——DOM或以树形展示的Web页面

    Web网页的一般能够通过document以及document所相关的各种元素组成.当然我们也能够通过层次结构的树形结构在展现Web页面.假设要对一个网页进行改动的话,我们能够通过document对象. ...

  4. JavaScript(核心、BOM、DOM)

    http://www.flyne.org/article/407 JavaScript(核心.BOM.DOM) JavaScript是基于对象和事件驱动的客户端脚本语言.有如下特点: 交互性 安全性( ...

  5. Java web JavaScript DOM 编程

     JavaScript DOM 编程 (1).DOM概述及分类 (2).DOM结构模型:XML DOM 和 HTML DOM 关系? (3).结点,结点树,结点属性与方法? 1.DOM是什么? d ...

  6. JavaScript -- 时光流逝(十二):DOM -- Element 对象

    JavaScript -- 知识点回顾篇(十二):DOM -- Element 对象 (1) element.accessKey: 设置或返回accesskey一个元素,使用 Alt + 指定快捷键 ...

  7. How to get a DOM element's ::before content with JavaScript?

    How to get a DOM element's ::before content with JavaScript? https://stackoverflow.com/questions/443 ...

  8. Is it possible to implement a Firebug-like “inspect element” DOM element highlighter with client-side JavaScript?

    Is it possible to implement a Firebug-like "inspect element" DOM element highlighter with ...

  9. 读书笔记:JavaScript DOM 编程艺术(第二版)

    读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ...

随机推荐

  1. 适配器模式及C++实现

    适配器模式及C++实现 适配器模式 适配器模式是很好理解的模式了,生活中也非常常见,什么插头2口转3口,什么USB转PS2,这都算是适配器模式.说白了,就是如果有一些东西提供的接口你很像用,但是你手头 ...

  2. C#中 如何执行带GO的sql 语句

    C#中是不允许执行带GO的sql 语句的, 如何做呢? 思路就是将带GO的sql语句转化为分段执行, 但在同一事务内执行. 扩展方法是个很不错的主意, 但是尽量不要影响原来的cmd的一些东东, 如 c ...

  3. siverlight 后台动态设置图片路径的总结

    最近碰到了个问题,需要给一个用户控件中的image动态设置图片资源 1.图片资源属性为resource时,静态引用无任何问题,但是动态设置时,就什么也不显示 后来找到问题所在, 必须把此图片属性项中“ ...

  4. 不想再做"鸟蛋"

    至今为止学习C++两个学期了,有过迷茫,有过自信,有过崩溃,有过希望,有过伤心,有过高兴.这一路走来,C++虐我千百遍,我待C++如"初恋".                    ...

  5. Linux负载均衡软件LVS之二(安装篇)

    一.  安装LVS软件 1.安装前准备工作操作系统:统一采用Centos4.4版本.地址规划,如表1所示:表1 更详细的信息如图2所示: 图2中的VIP指的是虚拟IP地址,还可以叫做LVS集群的服务I ...

  6. oc之里氏替换原则

    1. 里氏替换原则. LSP 子类对象可以替换父类对象的位置,并且程序的功能不受影响. 为什么? 1). 指针是1个父类类型,但是我们确给了指针1个子类对象的地址. 这样做当然是可以的,因为你要1个父 ...

  7. <span>什么意思

    <span> 在CSS定义中属于一个行内元素,在行内定义一个区域,也就是一行内可以被 <span> 划分成好几个区域,从而实现某种特定效果. <span> 本身没有 ...

  8. 在VirtualBox上安装CentOS7

    文章的出处:http://jingyan.baidu.com/article/9c69d48f8ec01613c8024e58.html 工具: VirtualBox-5.1.2-108956-Win ...

  9. python3的文件读写模式

    任何一种语言,文件的读写都是非常常见的.python的文件读写非常简单,仅仅一个函数open(file也可以,但是我不常用). 先看看官网的解释: open(file, mode='r', buffe ...

  10. 安卓---android:versionCode和android:versionName 用途

    主要用于升级和自我识别,转自:http://blog.csdn.net/wh_19910525/article/details/8660416 Android的版本可以在androidmainfest ...