html+dom+深入,DOM 深入学习 - 1

本文章记录本人在深入学习Javascirpt DOM中看书理解到的一些东西,加深记忆和并且整理记录下来,方便之后的复习。

DOM 版本

w3c 指定的DOM规范包括多个版本,不同的版本(或称知为级别)又包含不同的子规法和模块,不同浏览器对DOM的支持是千变万化的。

DOM0级

在很早的时候市场上已经有了一些不同版本的DHTML规范,主要包括IE和Netscape两个不同的版本。这组DHTML规法规定了一套文档对象、集合、方法和属性。虽然不同的DHTML版本的特性存在差异,但是一些基本的思路和用法还是有章可循的。

DOM1级

1998年10月,w3c 推出了DOM 1.0版本的规范。

这个规法主要是包括两个子规范。

- DOM Core(核心部分):把XML文档设计为树形节点结构,并为这种结构的运行机制定制了一套规法化标准,同时定义了创建、编辑、操作这些文档结构的方法以及属性。

- DOM HTML:针对HTML文档、标签集合、以及与个别HTML标签相关的元素定义了对象、属性和方法。

DOM2级

2000年1月,w3c正式发布更新后的DOM核心部分,并且在这次发布添加了一些新的规范,这次发布的DOM称为2级规范。2003年1月,w3c又正式发布了对DOM HTML子规范的修订,添加了针对HTML 4.01和XHTML 1.0版本文档中的很多对象、属性和方法。这次发布就叫做DOM2.0的推荐版本。

DOM 2.0 Core:添加了更多的特性,如针对命名空间的方法等。

DOM 2.0 HTML:针对HTML的文档结构模型,并添加了一些属性。

DOM 2.0 Event:规定了与鼠标相关的事件和控制机制,但是不包括键盘相关事件和处理部分。

DOM 2.0 Style:提供了访问和操作所有与css相关的样式以及规则的能力。

DOM 2.0 Traversal and DOM 2.0 Range:允许开发人员通过迭代方式访问DOM,以便根据需要对文档进行遍历或者其他的操作。

DOM 2.0 Views:提供了访问和更新文档的表现的能力。

DOM 2.0规法已经是目前各大浏览器主持的主流标准。可惜对ie的支持并不完善。

DOM3级

2014年4月,w3c发布了DOM3.0版本。

DOM 3.0 Core:添加了更多新的方法和新属性。同时也修改了已有的一些方法。

DOM 3.0 Load and Save:提供将XML文档的内容加载到DOM文档中和将DOM文档序列化为XML的文档能力。

DOM 3.0 Validation:提供了确保动态生成的文档的有效性的能力,即如何符合文档类型声明。

清理 DOM 加载流程

一般浏览器加载顺序:

1. 解析HTML结构

2. 加载外部脚本和样式结构表

3. 解析并且执行脚本代码

4. 构造DOM模型

5. 加载图片等外部文件

6. 页面加载完毕

通过上面的加载顺序可以知道,网页头部的脚本(由外部文件加载)会在构造HTML DOM文档之前执行,这就会导致执行脚本无法访问文档结构模型。

如果页面包含许多的外部文件,如大量的图片、视频、音频、动画等文件,可能会延迟脚本的执行事件。为了避免js脚本处于长时间的等待,可以把需要执行的脚本部分放在HTML文档的中间,这样只要在构造DOM后执行到脚本所在的结构位置,就会执行脚本。所以一般建议把js放在页面的底部。

谨慎访问 DOM

访问一个DOM元素是代价比较高的,修改元素的代价更高,因为它们经常导致浏览器重新计算页面的几何变换。在访问或者修改元素最不好的情况下就是使用循环执行操作,特别是在HTML集合中使用循环。

for (var i = 0; i < 15000; i++) {

document.getElementById('here').innerHTML += 'a';

};

上面这段代码的问题就是每一次循环都会去对DOM元素访问两次:一次是读取innerHTML属性能容,第二次是写入它。更有效率的方法是使用局部宾利储存更新后的内容,在循环结束后一次性写入。

var text = '';

for (var i = 0; i < 15000; i++) {

text += 'a';

};

document.getElementById('here').innerHTML += text;

innerHTML 与 DOM 方法

谁的性能比较好

两者的性能都是基本接近,不过几乎所有的浏览器中,innerHTML的速度会更快一些,但是最新的基于webkit内核的浏览器除外。

如何选用

使用innerHTML的好处就是在早期的浏览器上面是显而易见的,但在最新版本的浏览器上面就没有那么的明显。因此,采用哪种方法将取决于用户经常使用的浏览器,以及个人的编码爱好。

对于日常的大多数的操作而言,使用innerHTML和使用DOM差异并不是很大,应当根据代码的可读性、可维护性、团队习惯、以及代码风格来综合决定采用那种风格。

警惕文档遍历中的空格 bug

在遍历DOM元素时候,空格的存在很容易造成误解,因为DOM把空格也作为一个节点进行解析(换行符也算)。

var el = document.documentElement.lastChild.firstChild.nodeName;

可以使用上面的代码去检测DOM的元素。

可以定义一个函数用来清除所有包括包含文本节点。这样当执行文档遍历的时候,就不存在元素之间的空格影响。函数要在文档结构加载完后在执行。

function clean(el) {

var el = el || document,

f = el.firstChild;

while (f != null) {

if (f.nodeType === 3 && /\s/.test(f.nodeValue)) {

e.removeChild(f);

} else if (f.nodeType === 1) {

arguments.callee(f);

}

f = f.nextSibling;

};

}

使用上面函数要注意到是,该函数的功能仅是临时性的清除元素之间的空格,需要在HTML文档的每一次加载是都重新只想你个一遍清除的操作。当然,使用这种方法虽然比较高效,但是在每次遍历文档之前,都需要先执行一次遍历操作,如果文档的结构比较复杂,那么这个操作所消耗的系统资源是不可小视的。

bVlFiC

最后,如果文章有什么错误和疑问的地方,请指出。与sf各位共勉!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/557999.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机课件知识,计算机基础知识1认识计算机课件.ppt

《计算机基础知识1认识计算机课件.ppt》由会员分享&#xff0c;提供在线免费全文阅读可下载&#xff0c;此文档格式为ppt&#xff0c;更多相关《计算机基础知识1认识计算机课件.ppt》文档请在天天文库搜索。1、计算机基础知识(一)认识计算机知道一台完整PC(个人计算机)由哪些硬…

计算机网络与通信的课程报告,计算机网络与通信课程设计报告.doc

第第 PAGE \* MERGEFORMAT 1 页 共 NUMPAGES \* MERGEFORMAT 63 页PAGE \* MERGEFORMAT1《计算机网络与通信》课程设计报告题 目&#xff1a; 计算机网络与通信课程设计姓 名&#xff1a; 林征丹 林志斌专 业&#xff1a; 通信工程班 级&#xff1a; 141学 号&#xff1a; 201…

计算机应用常用的30个函数,Excel中常用函数的使用

&#xff29;&#xff33;&#xff33;&#xff2e;&#xff11;&#xff10;&#xff10;&#xff19;—&#xff13;&#xff10;“咖船&#xff52;&#xff2b;&#xff4e;&#xff4f;别&#xff42;内&#xff45;&#xff41;&#xff4e;&#xff44;伯叻肋叻电奠知识…

cam350怎么看顶层_厉害的人是怎么分析问题的?(实操干货)

“经常做一个方案&#xff0c;几十页PPT还没把问题讲清楚&#xff0c;老板一个问题就貌似发现了关键&#xff0c;这到底是一种怎么样的思维方式&#xff1f;”我在职场这么多年&#xff0c;也遇到过很多次这样的问题。在我初入职场时&#xff0c;经领导点拨后&#xff0c;也产生…

计算机一级某学校师资情况表,2011年计算机一级考试MS OFFICE上机考试指导

11.******本题共有2小题******注意&#xff1a;下面出现的所有文件都必须保存在指定的文件夹下。(1)打开工作簿文件EX.XLS(内容如下)&#xff0c;将工作表sheet1的A1&#xff1a;F1单元格合并为一个单元格&#xff0c;内容居中&#xff1b;计算&#xff1a;“增长比例”列的内容…

抓球球的机器人应该怎么玩_王者荣耀:在游戏中当自己优势队友劣势的时候应该怎么玩?...

游戏里时常会有这么一种情况出现&#xff0c;我们疯狂Carry&#xff0c;一看战绩十几杠几&#xff0c;C得不行&#xff0c;但是队伍就是要输&#xff0c;颓势总是无法挽回。今天我就给大家说一下&#xff0c;是什么样的原因导致这种情况的发生。队友劣势的原因分析&#xff1a;…

计算机学业水平考试答题卡,高一年级期末信息技术考试(含答题卡)

新疆乌鲁木齐市2014-2015学年第二学期高一年级期末考试信息技术试卷(60分钟)第一部分必修模块(共80分)一、单项选择题(本大题共20小题&#xff0c;每小题2分&#xff0c;共40分)1&#xff0e;关于信息&#xff0c;以下说法不正确的是A&#xff0e;信息需要依附于载体而存在B&am…

ajax获得excel文件流在前端打开_主流前端技术讲解,面试必考!

Vue.js是Web前端的一个框架&#xff0c;用来快速开发单页面应用。当Vue.js开发变成主流的时候&#xff0c;许多公司的技术团队都打算把下一个新项目换成用Vue.js来开发。但是当我们详细了解Vue.js以后&#xff0c;会发现一个很尴尬的问题&#xff0c;那就是Vue.js的页面是采用客…

计算机无法用telnet,telnet不是内部或外部命令解决办法 Windows10开启Telnet功能方法...

一般情况下&#xff0c;Windows10正式版系统的telnet服务都是处于关闭状态的&#xff0c;需要我们手动开启才可以。telnet服务可以调试端口&#xff0c;其重要性不容小视。今天&#xff0c;就告诉教大家Windows如何配置telnet服务&#xff1f;虽然说今天以Windows10来示例&…

中海达数据怎么转rinex_hds2003下载-中海达HDS2003数据处理软件下载20120530 官方版-中海达GPS数据转RINEX格式西西软件下载...

HDS2003是中海达公司GPS后处理软件&#xff0c;可以进行GPS 数据后处理以及RTK 测量数据处理。HDS2003中文版&#xff0c;最新的中海达静态GPS平差软件&#xff0c;可广泛应于测量领域&#xff0c;比较实用。它可以处理所有中海达 GPS 的原始测量数据和其他品牌的GPS 数据(RINE…

vue 用jsp 还是html,如何在jsp页面里使用vue

## 只针对需要的### 以下各类同学可以直接跳过- 不推荐jsp和vue加一起写的- 说直接用jq写的- 。。。。。的- 吐槽的- 各种解决方案的##### 总结以上说的都是对的&#xff0c;但是已经写完了页面&#xff0c;所以 emmmm。。。。。### 申明楼主只是个前端自己写的大部分也都是前后…

局域网访问提示无法访问检查拼写_访问某一个共享提示windows无法访问,请检查名称的拼写,访问其他共享正常...

展开全部各位&#xff0c;我62616964757a686964616fe59b9ee7ad9431333431353336花了一天网上查阅&#xff0c;很多教程都是错误的&#xff0c;我写的这些前面的都是浮云&#xff0c;最主要的问题是第14步&#xff0c;直接完美解决问题Win10 1709无法共享的完美设置方案近期&am…

计算机主板另一个名称,主板名称太复杂 看这几点就秒懂了

现在的主板厂商特看重个性化和市场细分&#xff0c;恨不得给每个人定制最适合的主板&#xff0c;所以主板型号多到爆&#xff0c;名称还都特别长&#xff0c;看得人眼晕还看不懂。其实这些名字虽然拉拉杂杂一长串&#xff0c;但都带有很好理解的“关键词”&#xff0c;只要扫一…

html2canvas图片位移_html2canvas html截图插件图片放大清晰度处理方案,支撑恣意放大倍数,处理原插件图片偏移题目...

html2canvas html截图插件图片放大清晰度处理方案&#xff0c;支撑恣意放大倍数&#xff0c;处理原插件图片偏移题目Author:youzebin (2016.12.6)插件下载地点&#xff1a;https://github.com/niklasvh/h…1.起首引入html2canvas.js html2canvas 0.5.0-beta4 最新版即可必要步骤…

亚马逊产品描述计算机语言编辑,亚马逊Listing产品描述编辑讲解

烂人的虚伪我从头看到尾优质答主01-24TA获得超过2782个赞自建listing&#xff0c;就是根据自己的产品&#xff0c;自己打造产品客户端的展示内容&#xff0c;让顾客了解自己的产品&#xff0c;有下单的欲望&#xff01;建好如果效果不好&#xff0c;还要进行优化&#xff0c;最…

ul 原点显示_web前端开发学习教程,CSS HTML - ul li列表原点如何相连

原标题&#xff1a;web前端开发学习教程&#xff0c;CSS HTML - ul li列表原点如何相连目前我列出两个方案&#xff0c;很详细&#xff0c;希望可以帮助到有疑问的朋友。方案一:html参与考试《第一期模拟考试》3小时50分钟学习文档《LDO电路设计规范》3小时50分钟学习文档《LDO…

计算机的硬盘 内存在哪查到,电脑硬盘内存怎么查看

电脑硬盘内存怎么查看在我们买电脑的时候我们一般都会选择去看看电脑硬盘内存的大小。那么电脑硬盘内存怎么查看呢?下面就由jy135小编来告诉大家吧&#xff0c;欢迎阅读。方法一、在电脑系统中查看1、这里以 Windows7 系统为例&#xff0c;选中桌面的“计算机”图标&#xff0…

计算机组成原理上机实验报告.doc,计算机组成原理第二次上机实验报告.doc

《计算机组成原理第二次上机实验报告.doc》由会员分享&#xff0c;提供在线免费全文阅读可下载&#xff0c;此文档格式为doc&#xff0c;更多相关《计算机组成原理第二次上机实验报告.doc》文档请在天天文库搜索。1、&#xfeff;青岛理工大学实 验 报 告实验课程&#xff1a; …

linux messages 时间错乱_BATJ 常考的 21 条 Linux 命令,速度收藏!

来源: http://t.cn/EqTIhES一、文件和目录1. cd命令(它用于切换当前目录&#xff0c;它的参数是要切换到的目录的路径&#xff0c;可以是绝对路径&#xff0c;也可以是相对路径)cd /home 进入 / home 目录cd .. 返回上一级目录 cd ../.. 返回上两级目录 …

layui导航栏页面滚动固定_网站建设页面导航如何降低用户寻找的时间

做为正确引导客户体验网站的莱单导航栏&#xff0c;从检索视角上而言&#xff0c;也起着关键的功效&#xff0c;莱单导航栏不但联系网站的外界&#xff0c;也联系着网站主页面及其别的网页&#xff0c;是全部网站的“管理中心”&#xff0c;因此网站建设中莱单导航栏设计方案&a…