DOM 5

1. *****定时器

动画

2. screen

3. history

4. ***location

5. ***navigator

6. ****event

1. *****定时器

动画:

练习:

获取长度属性值时: 获得都是带单位的字符串,不能直接计算

都要先去单位(parseFloat),再计算

设置长度属性值时: 在数值结尾拼单位(px)

2. screen对象:

获得屏幕的大小:

完整大小: screen.width/height

何时: 用屏幕大小鉴别设备种类: ——鄙视题

wide desktop  -  lg : 1200+

pc                    - md: 992+

pad                  - sm: 768+

phone              - xs: 480+

可用大小: screen.availWidth/availHeight

去掉任务栏之后的剩余大小

3. history: 保存当前窗口打开后成功访问过的url的历史记录栈

前进: history.go(1)

后退: history.go(-1)

刷新: history.go(0)

其实: history.go(n)

4. ***location: 封装当前窗口正在打开的url对象

属性:

.href: 获取或设置当前网页打开的url

何时: 在当前页面打开新链接时

简写: location.href=url  ->  location=url

.protocol: 协议

.host: 主机名+端口号

.hostname: 主机名

.port: 端口号

.pathname: 网页的相对路径

.hash: #锚点

.search: ?查询字符串

鄙视: .search -> 参数组成的对象:

?uname=zhangdong&upwd=123456

["uname=zhangdong", "upwd=123456"]

{uname:zhangdong, upwd:123456}

1. ***location

2. ***navigator

3. ****event

1. ***location:

属性:

方法:

location.assign("url") => location.href="url"

location="url"

location.reload(false/true): 重新从服务器加载url

force

默认false: 优先从服务器端缓存中获取文件

如果改成true, 强制从服务器硬盘获取新文件

location.replace(url): 在当前窗口打开新url,禁止后退

2. ***navigator: 封装浏览器配置信息的对象

navigator.cookieEnabled: 是否启用cookie

cookie: 在客户端本地持久存储一个数据的文件

如果禁用无法保存搜索关键词,或记住密码

navigator.plugins: 封装所有插件对象的集合

判断浏览器的名称和版本:

navigator.userAgent: 保存浏览器内核,名称,版本号的字符串

3. ****event

事件: 浏览器自己触发的或用户手动触发的页面(元素)状态的改变。

浏览器在事件发生时,都会自动调用事件处理函数

事件处理函数: 当节点发生事件时,自动调用的函数

其实就是节点的onxxx属性

事件处理函数的值,都是一个函数对象

事件发生时: 节点对象.onxxx();

事件处理函数中的this: .前的节点对象

何时: 只要希望一个元素/节点,能够响应某个事件时

在发生某个事件时,能自动执行事件处理函数

如何: 3种方式:

1. 在html元素开始标签中:

html: <ANY on事件名="js语句(this)"

js: function 函数(ANY){ ... }

问题: 1. 无法为动态生成的元素绑定事件

2. 事件绑定分散在页面各个角落,不便于维护

2. 在js中绑定事件: 2种方式:

1. ANY.on事件名=function(){

this->ANY

}

事件发生时,自动执行: ANY.onXXX();

问题: 每个ANY的一个事件处理函数,只能绑定一个函数对象。

解决:

2. ANY.addEventListener("事件名",fn)

ANY.removeEventListener("事件名",fn)

如果只是添加事件监听,可用匿名函数

如果可能移除某个处理函数,就必须用有名的函数绑定

IE8: ANY.attachEvent("on事件名",fn)

其实: addEventListener("事件名",fn,capture)

capture: 是否在捕获阶段就提前触发

默认false: 所有事件处理函数都在冒泡阶段反向触发

true: 该事件会在捕获阶段就提前触发!

***事件周期:

DOM标准: 3阶段

1. 捕获(capture): 由外向内依次记录各级元素绑定的相同事件处理函数

2. 目标出发: 执行实际触发事件的元素上的处理函数

3. 冒泡: 由目标元素向外,出发各级父元素上绑定的相同事件处理函数

目标元素(target): 实际触发事件的元素

IE8: 2个阶段: 没有捕获阶段

事件对象: event: 在事件发生时,自动创建的封装所有事件信息的对象

event对象提供了操控事件的方法: 阻止事件, 取消冒泡....

何时: 1. 为了获得事件相关的数据

2. 操控事件

如何:

获取: DOM标准: 事件对象,默认作为事件处理函数的第一个参数传入:

IE8: 事件对象自动保存在全局变量event中

兼容: function eventHandler(e){

e=e||window.event;

}

取消冒泡: e.stopPropagation();

利用冒泡:

优化: 尽量少的添加EventListener

为什么: 每个EventListener都是一个对象

浏览器触发事件时,会轮询每个EventListener对象

添加的EventListener越多,页面响应速度越低

解决: 当多个平级子元素绑定相同的事件处理函数时

其实,只要在父元素绑定一次,所有子元素共用即可!

难题: 1. 如何获得目标元素:

this->父元素 X

DOM: e.target ->目标元素

IE8: e.srcElement

兼容: var target=e.target||e.srcElement;

2. 鉴别目标元素是否想要:

判断元素的名称或属性

时间: 2024-11-05 18:41:27

DOM 5的相关文章

虚拟DOM

DOM(Document Object Model)是很慢的,其元素非常庞大,页面的性能问题鲜有由JS引起的,大部分都是由DOM操作引起的.如果对前端工作进行抽象的话,主要就是维护状态和更新视图:而更新视图和维护状态都需要DOM操作. 在jQuery出现以前,我们直接操作DOM结构,这种方法复杂度高,兼容性也较差:有了jQuery强大的选择器以及高度封装的API,我们可以更方便的操作DOM,jQuery帮我们处理兼容性问题,同时也使DOM操作变得简单:MVVM使用数据双向绑定,使得我们完全不需要

JS学习--DOM

1.概念 文档对象模型DOM,定义访问和处理HTML文档的标准方法.DOM将HTML呈现为带有元素.属性和文本的树结构(节点树). 2.document.getElementById("id")--获取的是一个元素对象. documment.getElementById("id").innerHTML--才可获取其中的内容. 3.HTML样式 Object.style.property=new style;部分属性: 如: mychar.style.color=&q

高性能WEB开发:DOM编程

我们知道,DOM是用于操作XML和HTML文档的应用程序接口,用脚本进行DOM操作的代价很昂贵.有个贴切的比喻,把DOM和Javascript(这里指ECMscript)各自想象为一个岛屿,它们之间用收费桥梁连接,ECMAscript每次访问DOM,都要途径这座桥,并交纳"过桥费",访问DOM的次数越多,费用也就越高.因此,推荐的做法是尽量减少过桥的次数,努力待在ECMAscript岛上.我们不可能不用DOM的接口,那么,怎样才能提高程序的效率? 1.DOM访问与修改 访问DOM元素是

dom方法insertAfter的实现

在dom的原生api中,只用insertBefore,没有insertAfter,借助原有的api,可以模拟一个insterAfter. function insterAfter(newElement,targetElement){ var parent = targetElement.parentNode; if(parent.lastChild == targetElement){ parent.appendChild(newElement); } else{ parent.insertBe

第十章—DOM(0)—NODE类型

DOM1定义了一个node接口,该接口由DOM的所有节点类型实现. 所有的节点都存在这样或那样的关系.在HTML中,head,body可以看出是html的子元素,html是head,body的父元素,而head,body互为同胞元素. 这里要注意一个概念:nodeList 输出: 如下例子: 1 <div id="myDiv"> </div><!-- 此处有空格 --> 2 <script> 3 var div = document.ge

对dom的初步了解

什么叫DOM,DOM是文档对象模型Document Object Model DOM树 : 根结点(document) 父结点(parentNode) 子结点(childNodes) 兄弟结点 兄弟结点 sibling) (sibling) DOM在HTML文档中常见的几种结点类型:1.DOCUMENT_NODE (document)文档根结点类型,该枚举型的值是9. 2.ELEMENT_NODE (element)元素结点类型,该枚举型的值是1.上文中的html, body, div这些结点都

DOM基础(一)

在我们刚刚学JavaScript的时候,就应该听说过,JavaScript是由三部分组成的.分别是ECMAScript,DOM和BOM组成的.ECMAScript是JavaScript的核心,它描述了JavaScript的基本语法和对象,DOM则是描述了处理网页内容的方法和接口,而BOM描述了与浏览器进行交互的方法和接口.在我之前的关于JS入门系列的文章里,就讲了许多关于JavaScript的基本语法和对象,也就是ECMAScript.而在这个DOM系列的文章里,我将会介绍一些关于DOM的基础.

python2.0_s12_day13_javascript&amp;Dom&amp;jQuery

今天主要内容:JavaScriptDomjQuery http://www.cnblogs.com/wupeiqi/articles/5369773.html 今天主要内容大致了解:javascript 1.首先要知道 JavaScript 和 Java 没有半毛钱关系. 2.JavaScript 和python语言 一样 它也是一门语言.对于python语言需要用python解释器解释.而javascript的解释器是浏览器. 3.javascript 能实现什么.javascript就是让我

BOM和DOM

BOM 浏览器对象模型 BOM中的对象 Window对象:是指窗口对象,可通过Window对象的属性和方法控制窗口,例如打开或关闭一个窗口 History对象:指历史页面,通过History对象的属性和方法实现前进后退的功能 Location对象:指地址栏,通过属性的方法控制页面的跳转 Document对象:指网页中的内容,通过属性和方法控制页面元素 1.Window对象的常用方法: open(); close(); alert(); prompt(); confim(); setTimeout

JavaScript实现绑定DOM的定时器插件

问题 使用原生的setTimeout和setInterval仅仅能够实现, 定时执行事件处理函数, 在网页开发中, 往往会出现一种情况,定时器用于定时更新某个页面区域的数据, 往往在页面加载之后, 就启动这个定时器, 往后则间隔执行此定时器. 页面上定时刷新的区域可能会动态消失, 特别是在ajax被广泛使用的今天, 如果定时刷新的区域被删除了, 则定时器材也需要自动清除掉. 此二个接口,如果实现这种效果需要, 自己维护定时器句柄, 并且在处理定时器事件函数的时候, 首先判断 指定的刷新区域是否还