html是包含着dom里的么? 二者具体什么关系? 一个html文件里哪部分是dom

浏览器解析HTML的过程及DOM的树形结构
渲染引擎& & & & 渲染引擎的职责是……渲染,也就是把请求的内容显示到浏览器屏幕上。默认情况下渲染引擎可以显示HTML,XML文档以及图片。 通过插件(浏览器扩展)它可以显示其它类型文档。比如使用PDF viewer插件显示PDF文件。& & & & 我们提到的Firefox, Safari两种浏览器构建于两种渲染引擎之上:Firefox使用Gecko —— Mozilla自家的渲染引擎;Safari 和 Chrome 都使用 Webkit。Webkit 是一个开源的渲染引擎,它源自Linux平台上的一个引擎,经过Apple公司的修改可以支持Mac与Windows平台。主要流程& & & & 渲染引擎开始于从网络层获取请求内容,一般是不超过8K的数据块。接下来就是渲染引擎的基本工作流程: 解析HTML构建DOM树,渲染树构建,渲染树布局,绘制渲染树& & & & 渲染引擎会解析HTML文档并把标签转换成内容树中的DOM节点。它会解析style元素和外部文件中的样式数据。样式数据和HTML中的显示控制将共同用来创建另一棵树——渲染树。渲染树包含带有颜色,尺寸等显示属性的矩形。这些矩形的顺序与显示顺序一致。& & & & 渲染树构建完成后就是&布局&处理,也就是确定每个节点在屏幕上的确切显示位置。下一个步骤是绘制 —— 遍历渲染树并用UI后端层将每一个节点绘制出来。一定要理解这是一个缓慢的过程,为了更好的用户体验,渲染引擎会尝试尽快的把内容显示出来。它不会等到所有HTML都被解析完才创建并布局渲染树。它会在处理后续内容的同时把处理过的局部内容先展示出来。主要流程示例 Webkit主要流程 Mozilla的Gecko渲染引擎主要流程& & & & 尽管Webkit与Gecko使用略微不同的术语,这个过程还是基本相同的。Gecko 里把格式化好的可视元素称做&帧树&(Frame tree)。每个元素就是一个帧(frame)。 Webkit 则使用&渲染树&这个术语,渲染树由&渲染对象&组成。Webkit 里使用&layout&表示元素的布局,Gecko则称为&Reflow&。Webkit使用&Attachment&来连接DOM节点与可视化信息以构建渲染树。一个非语义上的小差别是Gecko在HTML与DOM树之间有一个附加的层 ,称作&content sink&,是创建DOM对象的工厂。解析& & & & 因为解析是渲染引擎中一个很重要的处理,解析一个文档意味着把它翻译成有意义的结构以供代码使用。解析的结果通常是一个表征文档的由节点组成的树,称为解析树或句法树。解析表达式&2 + 3 – 1″可以返回下面的树: 数学表达式树节点语法& & & & 解析是基于文档所遵循的语法规则——书写所用的语言或格式——来进行的。每一种可以解析的格式必须由确定的语法与词汇组成。这被称之为上下文无关语法。人类语言并非此种语言,所以不能用常规的解析技术来解析。解析器——词法分析器组合& & & & 解析器有两个处理过程——词法分析与句法分析。词法分析负责把输入切分成符号序列,符号是语言的词汇——由该语言所有合法的单词组成。句法分析是对该语言句法法则的应用。解析器通常把工作分给两个组件——分词程序负责把输入切分成合法符号序列,解析程序负责按照句法规则分析文档结构和构建句法树。词法分析器知道如何过滤像空格,换行之类的无关字符。 从源文档到解析树(文档,词法分析,句法分析,解析树)& & & & 解析过程是交互式的。解析器通常会从词法分析器获取新符号并尝试匹配句法规则。如果匹配成功,就在句法树上创建相应的节点,并继续从词法分析器获取下一个符号。如果没有匹配的规则,解析器会内部保存这个符号,并继续从词法分析器获取符号,直到内部保存的所有符号能够成功匹配一个规则。如果最终无法匹配,解析器会抛出异常。这意味着文档无效,含有句法错误。转换& & & & 多数情况下解析树并非最终结果。解析经常是为了从输入文档转换成另外一种格式。比如编译器要把源码编译成机器码,会首先解析成解析树,再把解析树转换成机器码。 编译过程(源码,解析,解析树,转换,机器码)词法与句法的合法性定义& & & & 词汇通常用正则表达式来表示。比如我们的语言可以定义为:& & & & INTEGER :0|[1-9][0-9]*& & & & PLUS : +& & & & MINUS: -& & & & 如你所见,整型是由正则表达式定义的。句法常用BNF格式定义,我们的语言被定义为:& & & & expression :=&&term&&operation&&term& & & & operation :=&&PLUS | MINUS& & & & term := INTEGER | expression& & & & 我们说过常规解析器只能解析上下文无关语法的语言。这种语言的一个直觉的定义是它的句法可以用BNF完整的表达。Webkit使用两款知名的解析器生成工具:Flex用于创建词法分析器,Bison用于创建解析器 (你也许会看到它们以Lex和Yacc的名字存在)。Flex的输入文件是符号的正则表达式定义,Bison的输入文件是BNF格式的句法定义。HTML解析器& & & & HTML解析器的工作是解析HTML标记到解析树。HTML语法定义& & & & HTML的词汇与句法定义在w3c组织创建的规范中。当前版本是HTML4,HTML5的工作正在进行中。不是上下文无关语法& & & & 在对解析器的介绍中看到,语法可以用类似BNF的格式规范地定义。不幸的是所有常规解析器的讨论都不适用于HTML(我提及它们并不是为了娱乐,它们可以用于解析CSS和JavaScript)。HTML无法用解析器所需的上下文无关的语法来定义。过去HTML格式规范由DTD (Document Type Definition)来定义,但它不是一个上下文无关语法。HTML与XML相当接近。XML有许多可用的解析器。HTML还有一个XML变种叫XHTML,那么它们主要区别在哪里呢?区别在于HTML应用更加&宽容&,它容许你漏掉一些开始或结束标签等。它整个是一个&软&句法,不像XML那样严格死板。 总的来说这一看似细微的差别造成了两个不同的世界。一方面这使得HTML很流行,因为它包容你的错误,使网页作者的生活变得轻松。另一方面,它使编写语法格式变得困难。所以综合来说,HTML解析并不简单,现成的上下文相关解析器搞不定,XML解析器也不行。HTML DTD& & & & HTML的定义使用DTD文件。这种格式用来定义SGML族语言,它包含对所有允许的元素的定义,包括它们的属性和层级关系。如我们前面所说,HTML DTD构不成上下文无关语法。DTD有几种不同类型。严格模式完全尊守规范,但其它模式为了向前兼容可能包含对早期浏览器所用标签的支持。DOM& & & & 解析器输出的树是由DOM元素和属性节点组成的。DOM的全称为:Document Object Model。它是HTML文档的对象化描述,也是HTML元素与外界(如Javascript)的接口。DOM与标签几乎有着一一对应的关系,如下面的标签&html&&&& & &body&&&& && &&&&p& Hello World p&&&& && &&&&div& &img src=&example.png&/&div&&&& & body&&& html&&&会被转换成如的DOM树: DOM tree of the example markup& & & & 当我们说树中包含DOM节点时,意思就是这个树是由实现了DOM接口的元素组成。这些实现包含了其它一些浏览器内部所需的属性。解析算法如我们前面看到的,HTML无法使用自上而下或自下而上的解析器来解析。理由如下:& & & & 语言的宽容特点& & & & 浏览器需要对无效HTML提供容错性的事实。& & & & 解析过程的反复。通常解析过程中源码不会变化。但在HTML中,script标签包含&document.write&时可以添加内容,即解析过程实际上还会改变源码。& & & & 浏览器创建了自己的解析器来解析HTML文档。HTML5规范里对解析算法有具体的说明,解析由两部分组成:分词与构建树。分词属于词法分析部分,它把输入解析成符号序列。在HTML中符号就是开始标签,结束标签,属性名称和属生值。分词器识别这些符号并将其送入树构建者,然后继续分析处理下一个符号,直到输入结束。 HTML解析流程 (源自HTML5规范)
35 总笔记数
3.7万 总阅读量
Copyright &
All Rights Reserved.
合作伙伴:javascript之DOM技术(一)
首先需要理解的一点是,DOM是针对XML的基于树的API,它的实现有很多(各语言基本都有自己的实现),我们讨论的是javascript中或者说xhtml(html)对DOM的实现。 一、使用DOM 考虑一个html文件: html headtitle测试/title/head body p测试/p /body /html 1.
首先需要理解的一点是,DOM是针对XML的基于树的API,它的实现有很多(各语言基本都有自己的实现),我们讨论的是javascript中或者说xhtml(html)对DOM的实现。
一、使用DOM
考虑一个html文件:
&html&&head&&title&测试&/title&&/head&&body&&p&测试&/p&&/body&&/html&
1.访问节点:
访问html元素:var oHtml=document.documentE
获取head元素:var oHead=oHtml.firstC
获取body元素:var oBody=oHtml.lastC 或者 var oBody=document.
也可以通过childNodes来做同样的工作:
var oHead=oHtml.childNodes[0] 或者 oHtml.childNodes.item(0);
var oBody=oHtml.childNodes[1] 或者 oHtml.childNodes.item(1);
判断节点间关系:
alert(oHead.parentNode==oHtml); alert(oBody.previousSibling==oHead);alert(oHead.nextSibling==oBody);alert(oHead.ownerDocument==document);
2.检测节点类型:
通过节点的nodeType属性来检验节点类型:
alert(document.nodeType); //输出9
需要注意的是,DOM兼容的浏览器(以FF2.0为例),拥有Node.DOCUMENT_NODE、Node.ELEMENT_NODE等常量。各常量名称与数值对照表如下:
ELEMENT_NODE                 1ATTRIBUTE_NODE              2TEXT_NODE                     3CDATA_SECTION_NODE         4ENTITY_REFERENCE_NODE      5ENTITY_NODE                   6PROCESSING_INSTRCTION_NODE    7COMMENT_NODE               8DOCUMENT_NODE              9DOCUMENT_TYPE_NODE        10DOCUMENT_FRAGMENT_NODE  11NOTATION_NODE               12
(责任编辑:admin)
------分隔线----------------------------
[ 导读 ]本PS教程主要介绍如何利用调色的方法将模特照片处理成新潮艺术海报的素材,调...
在Excel中开始VBA程序 我所演示和开发测试的环境都是建立在Excel 2007上,读者如果想...
PwdType参数支持的枚举: 枚举含义 Cryptography.Decrypting使用了IsLine.Security空...
本文要叙述的是会造成硬盘毁灭性故障的错误及操作,不是一般的磁盘和系统错误,这些故...
系统资源(System Resource)和内存并不是同一个概念。 关于概念 系统资源(System Re...一:使用JavaScript可以给HTML中的某些标签设置事件属性的处理器(Handle)
&&& 在现代浏览器中都内置有大量的事件处理器。这些处理器会监视特定的条件或用户行为,例如鼠标单击或浏览器窗口中完成加载某个图像。通过使用客户端的 JavaScript,可以将某些特定的事件处理器作为属性添加给特定的标签,并可以在事件发生时执行一个或多个 JavaScript 命令或函数。
&&& 标签的事件属性是有HTML规范所设定的,所以对于某个标签支持哪些事件属性,可以通过查阅该标签的事件属性列表来获得,例如,我们想在鼠标移动到某个超链接时,显示一个提示对话框,其内容是欢迎来到&该超链接所链接的网站&。如何解决这个问题,首先我们查看HTML文档(W3school)中关于标签&a&的属性,发现其有一个名为onmouseover的事件属性,查看ommouseover事件属性的具体描述是:当鼠标指针悬停于某元素之上时执行脚本。显然,这个事件属性可以满足我们的需求,所以我们应该为该事件属性注册一个事件属性处理器,事件处理器的值是一个或一系列以分号隔开的 Javascript 表达式、方法和函数调用,并用引号引起来。当事件发生时,浏览器会执行这些代码。常用的注册标签的事件属性处理器的方法有两种:
&&& 方法一:直接在事件属性的值中写JavaScript代码,例如
&&& &a href="" onmouseover="alert('欢迎来到Google!');"&Welcome to Google.&/a&
&&& 方法二:将JavaScript代码封装到一个函数中,然后再onmouseover事件属性中用函数名来注册该处理器,例如
&script type="text/javascript"&
function hello()
alert('欢迎来到Google!');
&title&My First page.&/title&
&a href="" onmouseover="hello();"&Welcome to Google.&/a&
二:利用JavaScript操纵HTML页面中的DOM对象
&&& 利用JavaScript对象可以操纵HTML中的DOM对象和Browser(浏览器)对象,这些对象如下图所示:
通常在编写JavaScript代码时,我们都直接可以使用这些对象,例如获取或设置对象属性,使用对象提供的方法。 现在要思考的问题是,这些对象是如何被构造出来的,为何我们可以直接使用这些对象,这些对象的属性是由谁来设置的,这些对象的方法的代码有在哪里?
&&& 实际上上面这些所有的问题,都可以归结为一个问题:HTML页面是如何被显示的?专业一点的说法就是:HTML页面是如何被渲染的。
&&& 当我们向服务器请求某个页面时,服务器接受到我们的请求后将该页面的.html文件该我们发送过来,我们知道.html文件就是一个普通的文本文件,那么那些多彩的页面是如何来的呢?以下我们假设,我们请求到了一个名为index.html的文件。浏览器的页面渲染引擎(实际上就是一个.EXE或.DLL)读取index.html,在内存中以标签为结点来构造一棵DOM(Document Obejct Model)树。如图所示:
构造好DOM树之后,我们的渲染引擎就可以通过对这棵树以结点形式进行访问,然后进行页面的渲染。那有人就要问了,为啥我们渲染引擎要构造这棵DOM树,实际上这是由渲染引擎对页面的渲染算法所决定的,试想以下,如果渲染引擎使用其他的渲染算法,而不是通过遍历这棵DOM树来渲染页面,那么从渲染引擎的角度上讲就不需要构造这个DOM树了,实际上从使得页面具有动态效果的的角度上来看还是有必要构造这棵DOM树的,因为我们可以使用JavaScript代码来操纵这些DOM对象从而达到动态设置或改变DOM对象的属性这样页面也就会有所变化。
&&& 浏览器对象模型(BOM)的作用实际上是和 DOM 的使用是一样的,就是为了方便前端页面的编程,通过使用BOM对象我们就可以操纵浏览器,做到动态定制浏览器的特性。
&&& 渲染引擎在对 index.html 构建DOM树时,必然对&script&标签做了特殊处理,因为该标签中包含的内容为JavaScript代码,它对于页面的渲染没有直接的关系(它是有间接的关系),其中的代码需要经由JavaScript解释引擎来处理,DOM树构建好之后,DOM对象和BOM对象自然也就构造好了,那么JavaScript中使用的对象例如:document,window,中的属性也就设置好了,方法代码的入口点,也就确定了,这样就可以使用JavaScript代码中的getElementById,getElementByName等方法,来获取结点,设置属性。
&&& 在编写HTML页面时一定要有这样一个认识:JavaScript代码在执行时是由JavaScript解释引擎来进行执行的,而在JavaScript解释引擎对&script&标签中的代码进行解释执行的时候,浏览器的渲染引擎已经完成了对index.html文件的解析,从而DOM和BOM对象就已经构造好了,自然在JavaScript代码中可以正确引用到结点对象。所以,&script&和其他标签是分开处理的,同时处理的顺序也不同。千万不要认为&script&标签的执行与其位置有关,从而在使用某些方法时有所顾虑,例如:getElementById,千万不要认为我们要获取的元素在JavaScript代码所出现的&script&标签之后出现,就对该方法的使用产生怀疑。
阅读(...) 评论()html中的dom是什么意思 ?_百度知道
html中的dom是什么意思 ?
,即通过dom来炒作,w3c对其标准化了,开发人员可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构,一个HTML文件是以树形结构加载到内存的dom
是document
即文档对象模型。
采纳率:57%
在浏览器中负责页面部分的叫做dom 负责浏览器标题 菜单 状态等等叫BOM
为您推荐:
其他类似问题
dom的相关知识
等待您来回答[Java教程]什么是Dom?
你的位置:
[Java教程]什么是Dom?
Dom:英文全称-Document Object Model 译成中文即是:文档对像模型.听起来很术语,其实就是文档内容的结构关系.文档类型可以是HTML或Dom具有对Html文件和 Dom手册下载地址 Dom并非一种编程语言,Dom只是提供了一系列的接口,利用Dom的这些接口可以很方便的读取,修改,删除Html和 那么Dom是如何读取和管理Html文件的呢?首先你必须要了解html的源码结构.看图
如果你有学过或写过Html,那么你会对上图一目了然.我想要说明的就是Html的源码结构是有层次的,而且标签与杯签之间还存在着父子,或相邻的关系.上图不难看出HTML这个标签是最顶级的.最上层的.也可以理解成html文件的根.其次是Head与Body标签.这两个标签是相邻的.也可以理解成兄弟关系.但他们都属于html的子标签或称为子元素.然后Body标签内包含了Table,Div,Div.这三个标签你可以理解为Body的子标签或子元素.Body为父他们为子.Head所含的标签也是同理.另外第一个div内包含了另一个div.第二个div内包含了一些文本内容.他们的关系也是父子关系.Dom正是利用了Html源码的这种关系结构.而巧妙的在你的html源码中行走自如.犹如一位武林高手一般.尽情地施展他的"凌波微步".看下面的代码.代码结构与上图是吻合的.不同的是多了几个按扭来执行一些dom的指令操作.运行以后你便走进了Dom的神秘与精彩世界!!!
&html& &head& &title&这是网页的标题&/title& &link /& &meta /& &body& &table border=&1&&&table& &div&&div&&/div&&/div& &div&文本内容&/div& &input type=&button& value=&弹出html标签& onclick=&alert_HTML()&/& &input type=&button& value=&弹出body标签& onclick=&alert_Body()&/& &input type=&button& value=&弹出head标签& onclick=&alert_Head()&/& &input type=&button& value=&修改网页标题& onclick=&up_Title()&/& &input type=&button& value=&更改表格& onclick=&up_Table()&/& &input type=&button& value=&获取第一个div和他的子元素& onclick=&get_Div()&/& &input type=&button& value=&更改第二个div中的文本内容& onclick=&up_div_text()&/& &/body& &/html& &script type=&text/javascript&& function alert_HTML(){ //弹出html标签函数 var html = document.documentE alert(html.tagName); } function alert_Body(){ //弹出body标签函数 var body = document. alert(body.tagName); } function alert_Head(){//弹出head标签函数, var html = document.documentE //head是html标签中的第一个子元素 //childNodes可以获取某一标签内的所有子元素 var head = html.childNodes[0].tagN alert(head); } function up_Title(){ //注意title标签内的"这是网页的标题"将被改变. document.title = &Web圈提提供的Dom图解入门教程&; } function up_Table(){//为表格添加行,添加列并写入文本内容 var Table = document.getElementsByTagName(&table&)[0];//获取网页内第一个表格 var Tr = Table.insertRow(0);//为表格添加一行 var Td = Tr.insertCell(0);//为新建的行,添加一列 Td.innerHTML = &我是表格中的文本&; //利用innerHTML属性向td写入文本 } function get_Div(){//获取第一个div和他的孩子 var div = document.getElementsByTagName(&div&)[0]; alert(&我是第一个&+div.tagName); var child_div = div.childNodes[0];//虽然是子div,但是按解析顺序他在该页内是第二个出现的div, alert(&我是第一个div的子元素.我也是&+child_div.tagName); } function up_div_text(){ var div = document.getElementsByTagName(&div&)[2];//其实如果按解析顺序该div在本页应该是第3个, div.innerHTML = &欢迎阅读web圈提供的Dom图解入门教程.www.jb51.net 作者:康董&; } &/script& 上面演示的代码实例.略有繁琐.并非是Dom最优秀的使用方法.但足以让你了解Dom是怎样工作的. 下面将演示Dom迅速访问某个标签的方法.可以让你在成千上万个html标签中迅速找到你想的某个标签.比如你可以为你的html标签添加一个 ID属性.在Dom中有一个getElementById方法.该方法可以根据html标签的ID属性值,迅速找到这个标签.然后对其进行更改或其他操作. 下面的代码我只为table和第一个div添加一个id属性值.利用getElementByid迅速向able和第一个div的子div添加内容 &html& &head& &title&这是网页的标题&/title& &link /& &meta /& &body& &table id=&a& border=&1&&&table& &div id=&b&&&div&&/div&&/div& &div&文本内容&/div& &input type=&button& value=&更改table& onclick=&up_table()&/& &input type=&button& value=&为第一个div的子div写入文本& onclick=&up_div()&/& &/body& &/html& &script type=&text/javascript&& function up_table(){//更改table函数 var Table = document.getElementById(&a&);//根据id获取标签元素 var Tr = Table.insertRow(0); var Td = Tr.insertCell(0); Td.innerHTML = &欢迎光临Web圈,网址:www.web666.net&; } function up_div(){//为第一个div的子div添加文本内容 var div = document.getElementById(&b&); div.childNodes[0].innerHTML=&我是子div,我被写入文本了&; } &/script& 上面的两个例子中分别使用了Dom的以下方法: document:对当前整个Html网页的引用 documentElement:获取html和getElementsByTagName:根据指定的标签名称,来获取网页中所有相同的标签元素.如:table,或div.则会找出网页中所有table元素,或所有div元素.以一个类似数组的方式来返回对这些元素的引用. getElementById:根据指定的标签id值.来寻找标签元素.并返回对该标签的引用 childNodes:获取某个标签下所有的子标签元素,也就是我所说的孩子元素.并以一个类似数组的方式来返回对所有子元素的引用 insertRow:为表格增加一行 insertCell:为表格的某行增加一列 该入门教程只讲解了Dom中的一部份知识,请了解更多关于Dom的内容Dom可以在网页中做什么?HTML Dom中最常用的几个方法之查找元素 Dom之引用当前整个网页文档:document
Dom如何快速在网页中查找某一元素:getElementById
Dom中查找一组标签,具有相同名称的标签元素:getElementsByTagName
根据标签的Id属性值或name属性来查找多个元素:getElementsByNameDom中创建,添加,删除,修改,替换,复制,网页中的标签和文本内容的方法如下. 在网页中的创建一个标签元素:createElement
创建一段文本内容:createTextNode
向网页中添加元素:appendChild
删除元素的Dom方法是:removeChild
修改网页中标签元素的属性:setAttribute
替换已存在的标签或元素:replaceChild
复制克隆已存在的标签或元素:cloneNode
获取和修改元素内的html标签与文本内容:innerHTML
获取或修改元素的文本内容,仅支持IE:innerText
获取或修改元素的文本内容,支持FF:textContentHTML Dom中还专门提供了一组接口用来操作网页中的表格Table元素 HTML Dom中的insertRow方法可以为表格增加一行
删除表格中一行的方法是:deleteRow
HTML Dom中的insertCell方法可以为表格某行中增加一列
删除行中的一列的方法是:deleteCell
HTML Dom中的createCaption方法可以为表格创建一个标题
HTML Dom中的createTHead方法可以为表格创建一个Thead
HTML Dom中的createTFoot方法可以为表格创建一个TFoot
引用表格中所有行的属性为:rows
引用表格中某行的所有列:cells
移动表格中的行,只支持IE:moveRowDom中操作父元素,子元素,兄弟元素的相关命令 获取父元素的指令是:parentNode
获取元素中第一个子元素:firstChild
获取元素中最后面的那个子元素:lastChild
获取元素中所有的子元素:childNodes
获取前一个兄弟元素:previousSibling
获取后一个兄弟元素作者:康董 Dom手册使用说明你看到左侧的列表内容,即是Dom手册,你可以点击他们来了解其详细说明和用法.利用索引框可以快速的在Dom手册列表中查找你想要的内容. Dom所有方法或属性均为英文字母,所以不支持中文搜索.例如你可以尝试输入offsetTop或offsetLeft自动补全功能会让你事半功倍.该手册每页显示50条内容,您可以 使用分页导航来查阅. 如果你在该Dom手册中未找到你 想要的内容,请查看下面的Dom手册完善计划!Dom手册完善计划Web 圈致力于打造最全最详细的 html手册,css手册,dom手册,javascript手册,.这离不开您的支持与参与!高手必与众同乐,分亨是 我们永恒的主题,所以不要吝啬您的代码.唯有分享,才能共同步,共同提高.如果您未在该Css手册内容中,查找到您想要的内容.请参与我们的完善 计划,或者您对该Dom手册内容中解释不到位的,也可以参与补充.我们非常乐意接收您的建议!参与手册完善计划该Dom手册的特点web 圈提供的Dom在线手册的特点有:每个Dom的方法或属性的语法说明,实例演示让您深刻理解每个Dom的方法或属性,每个方法或属性兼容的浏览器以及是否附合W3C标准.并且让每个网友参与到其中,力求集思广益.
、 、 、 、 、}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信