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的属性和方法。

  1. var age=28; // 定义全局变量和在window对象上定义属性还是有差别的:全局变量不能通过delete删除,而在window对象上定义的属性则可以。
  2. window.color="red"; // var语句添加window属性时,有一个名为[[Configurable]]的特性,这个特性的值被设置为false,因此这样定义的属性不可以通过delete删除。
  3. //在IE<9是抛出错误,在其他浏览器中都返回false
  4. delete window.age;
  5. //在IE<9是抛出错误,在其他浏览器中都返回true
  6. delete window.color; //return true
  7.  
  8. alert(window.age); //28
  9. 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. 把虚拟机中的Linux系统安装到U盘中

    [小技巧] 把虚拟机中的Linux系统安装到U盘中 出于各种需求,很多用户可能经常会在Windows系统中安装虚拟机,然后在虚拟机中安装Linux系统.使用虚拟机的优点是可以同时使用多个系统,而缺点也 ...

  2. 应用之星在线app开发平台,菜鸟也会做应用

    看着各类应用平台玲琅满目的应用,你是否幻想过,如果里面能有一款我开发的应用是件多NB的事,平凡的你肯定会说,我又不会设计又不会代码,怎么可能?现在告诉你,这不是幻想,即使你不会设计也不会代码,一样可以 ...

  3. Android数据存储汇总

    1.sharedpreference,存储简单的信息,比如用户名,密码 package com.google.datastore.sharep; import android.app.Activity ...

  4. Linux登录ssh携带密码

    最近在使用ssh,但是每次都需要输入密码,想简单一步搞定,Google了一下,发现了一个比较笨的但实用的方法 1.安装 sshpass sudo apt-get install sshpass 2.携 ...

  5. 内存错误:CRT detected that the application wrote to memory after end of heap buffer

    今天调试测试代码时,发现在用完了new出来的内存buf后,在执行delete时报错了,具体信息为: HEAP_CORRUPTION_DETECTED: after Normal block(#908) ...

  6. SQL 两表关联查询 where 条件中等号两端字段顺序对效率的影响

    现有两表A(大).B(小)作关联查询,SQL语句如下: SQL1:select * from A,B where A.id = B.id SQL2:select * from A,B where B. ...

  7. 基于Ajax的长轮询(long-polling)方式

    如 图 1 所示,AJAX 的出现使得 JavaScript 可以调用 XMLHttpRequest 对象发出 HTTP 请求,JavaScript 响应处理函数根据服务器返回的信息对 HTML 页面 ...

  8. 数据库中的null问题

    在数据库中有些列的值可以为null,这一篇,我们围绕数据库中的null来讲述. 1. null与 “”.0的区别   数据库中的null表示——不知道,“”——一个空字符串,0则是一个数值.  所以n ...

  9. 【C语言】字符串模块

    一.字符串简介 * 在Java中,一个字符串可以用String类型来存储 String s = "MJ"; C语言中没有String这种类型.其实字符串就是字符序列,由多个字符组成 ...

  10. Mocha的单元测试实战

    Mocha Mocha是一个测试框架,为JS应用添加测试.使用见:mochajs. Mocha结合Nodejs实战 ontstair.js 这里我们使用自定义模块:ontstair.js,代码如下. ...