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添加一 ...
随机推荐
- WebGL on iOS8 最终等到了这一天
WWDC2014刚结束,这次的大会是名符事实上的开发人员大会.更贴切的应该说的确是一次软件开发人员的大会.对于OSX和iOS的很多其它功能特性让人兴奋.Swift新语言促成了如上图片 但我更感兴趣的是 ...
- js 数组排序要注意的问题,返回的值最好为 -1, 0, 1之间的值
var test10Elements = [7, 6, 5, 4, 3, 2, 1, 0, 8, 9]; var comparefn = function (x, y) { return x - y; ...
- Android Studio配置Dagger2 以及butterknife
一.配置butterknife 在build.gradle(Module)文件中的dependencies模块添加: dependencies { // add butterknife compile ...
- Android(java)学习笔记128:使用proguard混淆android代码
1.当前是有些工具比如apktool,dextojar等是可以对我们android安装包进行反编译,获得源码的.为了减少被别人破解,导致源码泄露,程序被别人盗取代码,等等.我们需要对代码进行混淆,an ...
- 使用jvisualvm和飞行记录器分析Java程序cpu占用率过高
一.jvisualvm使用 JDK1.6中Oracle提供了一个新的JVM监控工具:jvisualvm.下面重点介绍如何在本地通过远程的方式打开Linux服务器上的jvisualvm. 1.Xmana ...
- Sharepoint 移动客户端 Rshare的特点
1.随时随地快速访问SharePoint,和同事高效合作,实时浏览日历信息,完整日程安排.查看联系人信息.浏览公告,文档和图片等. 添加图片到相册,通过Email和他人分享. 2.新建.上传:新建日历 ...
- JDK Tools - wsimport: 编译 WSDL 生成 JAX-WS 规范的 Java 类
wsimport 命令是用来编译 wsdl 生成JAX-WS 规范的 Java 类的工具. 命令格式 wsimport [ options ] wsdl 命令参数 -s directory 指定源文件 ...
- APPlication,Session,Cookie,ViewState和Cache之间的区别
1.Application:用于保存所有用户共用的数据信息. 在Asp.Net中类似的配置数据最好保存在Web.config文件中.如果使用Application对象,一个需要考虑的问题是任何写操作都 ...
- 未能加载文件或程序集“App_global.asax”或它的某一个依赖项
未能加载文件或程序集"App_global.asax"或它的某一个依赖项.生成此程序集的运行时比当前加载的运行时新,无法加载此程序集. 出现这一问题的原因是空间支持framewor ...
- ionic+cordova+angularJs监听刷新
普通的js返回并刷新这里就不多说了,百度就有很多方法. 下面说的是使用了angularjs.ionic开发的一个手机app中我使用的返回上一页并刷新的方法. 场景:回复的页面是单独的,点击保存回复后会 ...