javascript进阶——分离式DOM脚本编程
编写分离式(unobstrusive)代码意味着对HTML内容的完全分离:数据来自服务器端,javascript代码用来动态化和交互。这种分离的好处是在不同浏览器之间使用是可以完全降级或升级运行,对于高级特性浏览器提供更丰富的交互,不支持高级特性的浏览器可以降级运行其所支持的部分。
一、DOM
DOM是表达XML文档的应用最广泛的方式,虽然可能未必是最快或者最轻量级和最易使用的,但是大部分web开发语言都提供了其实现。javascript最终的操作都是和网页里的HTML元素进行交互,而HTML是XML的一个子集,因此DOM是简化操作的出色工具,是开发分离式javascript代码的第一步,无非就是提供了以下几个简化的操作:获取或修改特定HTML元素、对元素的属性进行修改、绑定事件及编写处理函数。
1、概念
2、处理空格
3.、获取和查找元素
function text(e){
var t = "";
e = e.childNodes || e;
for (var j = 0; j < e.length; j++){
t += e[j].nodeType != 1 ?
e[j].nodeValue : text(e[j].childNodes);
return t;
}
}
className:使用类名查找元素,这是jquery提供的强大的选择器,同时也有css选择器,公开库有cssQuery。
4、等待HTML DOM加载
- 等待整个页面加载:window.onload事件绑定一个函数在页面完全加载后触发。
- 等待大部分DOM加载:行内的脚步在DOM构造后就可以立即执行,执行到该位置上的脚步才真正执行,也就是在页面中途嵌入的行内脚步只能访问该位置之前的DOM。因此可以在body结尾标签之前才执行脚本。
- 判断DOM合适加载完毕:监听DOM加载状态,是最有效的但是也是实现起来最复杂的。可以绑定windows事件那样简单又能获得行内脚步执行那样的速度。检查DOM元素和方法是否存在:检查要点document、document.getElementById等函数、document.body等或其他特定元素。
二、事件
事件是把所有东西粘在一起的胶水,DOM和javascript事件的结合是现代web应用程序的根基。主要有以下几种类型事件:
- 鼠标事件:追踪鼠标定位、点击事件
- 键盘事件:追踪键盘敲击和上下文
- UI事件:页面的某一方面是否覆盖了另一方面
- 表单事件:表单输入元素上
- 加载和错误事件:监听自身加载状态
- 传统绑定:对象.事件 = function (){....} 有点事简单和稳定,不同浏览器运作一致,this关键字引用当前元素。缺点是旨在事件冒泡中允许,而非捕获和冒泡,同时一个元素一次只能绑定一个事件处理函数
- DOM绑定:W3C提供的标准是addEventListener函数,提供三个参数:事件名称、处理函数、启用禁用事件捕获的布尔标记。优点是支持设置捕获和冒泡阶段,this指向当前元素,事件对象总是可以通过处理函数的第一个参数获取,同时可以为一个元素绑定多个事件而不会覆盖先前绑定的事件。
- IE绑定:可以绑定多个事件,但是仅支持冒泡阶段,this指向了window对象,不是当前元素,事件对象仅存在window.event参数中。同时必须以on+事件名的方式,仅IE可用。
三、javascript与CSS
在DOM和事件的交互基础上产生了DHTML,实质是javascript与DOM元素上的CSS属性之间的交互。
上述所有问题的讨论都是为了实现分离式脚本编程以适应不同浏览器而做到预留退路。首先应用程序的所有功能都要检查(if(document && document.getElementById)),其次是使用DOM遍历查找的通用方法来快速访问文档中的元素,最后是使用DOM和attachEvent/addEvenetListener函数为元素添加事件处理函数,<a href="#" onclick="dosth()...">...</a>这样的代码是非常不好的。
- javascript禁用:如果禁用了javascript,所有的页面都要能工作,最明显的就是a链接的href属性和onclick事件。
- 链接不依赖javascript:所有的链接都不应该有破坏性,通过链接可以删除、编辑或者修改任何用户数据的话都应该用表单实现。
- 监听css合适禁用
- 事件的亲和力:确保事件在不适用鼠标的情况下依然具备亲和力,可以对每个人都有好处。
javascript进阶——分离式DOM脚本编程的更多相关文章
- javascript学习 真正理解DOM脚本编程技术背后的思路和原则
本文学习来源于<javascriptDOM编程艺术>仅作笔记 学会怎样才能利用DOM脚本编程技术以一种既方便自己更体贴用户的方式去充实和完善你们的网页. 循序渐进:从最核心的内容开始,逐步 ...
- JavaScript进阶内容——DOM详解
JavaScript进阶内容--DOM详解 当我们已经熟练掌握JavaScript的语法之后,我们就该进入更深层次的学习了 首先我们思考一下:JavaScript是用来做什么的? JavaScript ...
- JavaScript进阶之DOM
文档对象模型DOM 文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式.我们最 ...
- 关于dom脚本编程的一些优秀理念总结
1.平稳退化(优雅降级) 目的:当浏览器不支持js或者js被用户禁用时,做到即使不运行js,网页的可读性亦不会受到太大的影响. 理念:使用最新的技术面向高级浏览器构建最强的功能及用户体验,然后针对低级 ...
- 慕课网javascript 进阶篇 第九章 编程练习
把平常撸的码来博客上再撸一遍既可以加深理解,又可以理清思维.还是很纯很纯的小白,各位看官老爷们,不要嫌弃.最近都是晚睡,昨晚也不例外,两点多睡的.故,八点起来的人不是很舒服,脑袋有点晕呼呼,鉴于昨晚看 ...
- JavaScript进阶 - 第10章 编程挑战
10-1 编程挑战 现在利用之前我们学过的JavaScript知识,实现选项卡切换的效果. 效果图:
- 二、JavaScript语言--JS基础--JavaScript进阶篇--DOM对象 控制HTML元素
1.认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节点树). 先来看看下面 ...
- Javascript进阶篇——(DOM—节点---获取浏览器窗口可视区域大小+获取网页尺寸)—笔记整理
浏览器窗口可视区域大小获得浏览器窗口的尺寸(浏览器的视口,不包括工具栏和滚动条)的方法:一.对于IE9+.Chrome.Firefox.Opera 以及 Safari: • window.innerH ...
- Javascript进阶篇——(DOM—节点---插入、删除和替换元素、创建元素、创建文本节点)—笔记整理
插入节点appendChild()在指定节点的最后一个子节点列表之后添加一个新的子节点.语法: appendChild(newnode) //参数: //newnode:指定追加的节点. 为ul添加一 ...
随机推荐
- [Bootstrap] 4. Typogrphy
What is Typography When we talk about typography, it's a big subject! Which of the following fall un ...
- debian配置简单的vsftp服务器
Ubuntu Linux与Windows系统不同,Ubuntu Linux不会产生无用垃圾文件,但是在升级缓存中,Ubuntu Linux不会自动删除这些文件,今天就来说说这些垃圾文件清理方法. 1 ...
- Java ZIP File Example---refernce
In this tutorial we are going to see how to ZIP a file in Java. ZIP is an archive file format that e ...
- VB.NET中使用代表对方法异步调用
按照我们常规的思维方式,计算机应该是干完一件事,然后再干下一件.用术语来说,这种执行任务的方式叫做同步执行(Synchronous Execution).既然这样,那么为什么要引入异步执行的概念呢? ...
- 【运维】使用FC命令辅助查杀DLL木马
使用FC命令辅助查杀DLL木马 在windows系统中,system32目录下是木马隐身的好地方,查找起来非常困难,许多木马都削尖了脑袋往那里钻,DLL木马也不例外.针对这一点用户可以在安装好系统和必 ...
- 关于Git的分支
分支是代码管理的利器.如果没有有效的分支管理.代码管理就适应不了复杂的开发过程和 项目的需要. 分支命令概述: 在Git中分支管理使用命令git branch.该命令的主要用法如下: 用法一: git ...
- Javascript日期处理类库Moment.js
1.组件详情地址Moment.js中文网 http://momentjs.cn/ 2.几个方法: (1) 日期格式化 moment().format(); // 2016-02-29T14:03:30 ...
- xml的语法与创建
xml语法很简单,但很严格,如果出现错误则不能正常解析,而HTML如果出现局部的错误,照样解析 xml第一行必须写xml头<?xml version='1.0' encoding='utf8'? ...
- .Net 组件技术概述
1. 基本原理 组件是组件系统中功能的表现,没有组件就没有功能.特定接口是用于给组件管理程序来操纵.管理该组件,特定功能是组件需要完成的任务.在一个使用组件建立的产品中会随着功能数目的多少而会有多个组 ...
- DEVMODE 结构体
typedef struct _devicemode { TCHAR dmDeviceName[CCHDEVICENAME]; //打印机(显示设备)名称 WORD dmSpecVersion; WO ...