Dom笔记(五)

1. history:
什么是: 保存当前窗口打开后,成功访问过的url的历史记录栈。
特点: 内容不对开发人员开放,更无法修改
如何使用: 前进,后退,刷新
前进: history.go(1)
后退: history.go(-1)
刷新: history.go(0)

2. location:
什么是: 保存当前窗口正在打开的url的对象
何时使用:
1. 跳转: 只能实现在当前窗口打开
location.href="url";
location.assign("url");
location="url"
2. 重新加载当前页面:
location.reload(false/true);
参数: force 表示是否强制从服务器硬盘获取最新文档。
3. 在当前页面打开,禁止后退:
location.replace("url");
打开新url,并用新url替换history中当前旧url,实现禁止后退

属性: http://tmooc.cn:8080/orders/orderDetails/index.html?username=zhangdong&kw=大鱼
#top
location.protocol: 协议
.host: 主机名+端口号
.hostname: 主机名
.port: 端口
.pathname: 相对路径
.search: ?及其之后的查询字符串
.hash: #锚点名

3. navigator:
包含了所有浏览器的配置信息: 没有标准
1. 判断cookie是否启用:
navigator.cookieEnabled
2. 判断是否安装了指定插件(plugin)
navigator.plugins集合
3. 判断浏览器名称和版本号(只支持5大浏览器)
navigator.userAgent

event:

什么是:浏览器自动触发或用户手动触发的页面元素状态的改变。
比如: change click focus blur
事件处理函数:当事件发生时,自动触发执行的函数。
事件处理函数其实就是元素的一个特殊属性
属性的值是一个函数对象
比如: onchange onclick onfocus
elem.onclick=function(){...}
当事件发生时,自动执行: elem.onclick();

如何绑定事件处理函数: 3种:
1. 在html中绑定:
<elem onXXX="js语句"
<button onclick="fun(this)"
fun(obj){obj->btn this->window }
button.onclick=function(){
//this->btn
eval("fun(this)"); //obj->btn
}
问题: 1. 不符合内容和行为分离的原则
2. 其实不是真正的绑定,只是传入一条js语句而已。
2. 在js中动态绑定:
1. elem.onxxx=function(){
this->elem
}
问题: 1. 一个事件处理函数只能绑定一个函数对象。
2. 无法改变事件触发的顺序
2. DOM:
elem.addEventListener(
"事件名",fun,false/true
);
为elem元素的指定"事件",绑定fun
第三个参数: 设置是否在捕获阶段触发
优: 1. 为一个事件处理函数,绑定多个函数对象。当事件发生时,可同时执行多个任务。
2. 可以改变事件触发的顺序
vs IE8: elem.attachEvent(
"on事件名",fn
);//没有第三个参数

DOM事件模型:
3个阶段:
1. 捕获:由外向内,依次记录各级元素绑定的事件处理函数
捕获阶段只到目标元素截止
2. 目标触发: 默认实际触发事件的元素上的处理函数先执行。
目标元素: 实际触发事件的元素
3. 冒泡: 按照捕获阶段反向的顺序,依次执行各级父元素上的事件处理函数

vs IE8: 事件模型:2个阶段:目标触发,冒泡

event:事件对象:
当事件发生时,自动创建的,封装事件信息的对象。
如何获得: 发生事件时,自动调用事件处理函数。此时js会将事件对象默认作为事件处理函数的第一个参数,放入函数。——DOM
elem.addEventListener(
"事件名",function(e){
//e->event
});
vs IE8: 事件对象保存在全局变量event中
不作为第一个参数传入
兼容DOM和IE8:
e=e||window.event
如果e有效,就用e,否则用event

取消冒泡: 执行完当前元素的事件处理函数后,阻止冒泡向上执行。
e.stopPropagation();
vs IE8:
e.cancelBubble=true;

利用冒泡:
优化: 尽量减少事件监听的个数
办法: 如果多个子元素绑定相同的事件处理函数,则只需要将事件处理函数绑定在父元素一次即可!
问题: 如何获得目标元素:
this->会随冒泡而改变
解决:e.target 始终保持目标元素
vs IE8: target=e.target||e.srcElement
DOM IE8

取消事件:在事件执行过程中,如果出现问题,可阻止事件继续执行。
更多是取消默认行为!
如何取消:
e.preventDefault();
vs return :
preventDefault阻止后续默认行为
不是停止当前函数执行
放前放后,对当前函数无影响
return: 退出当前函数执行
但不阻止默认行为的执行

事件坐标:
1. 相对于屏幕左上角:
e.screenX/Y
2. 相对于文档显示区左上角:
e.clientX/Y
兼容性问题: e.x/y
3. 相对于所在的父元素左上角:
e.offsetX/Y

时间: 2024-07-31 13:07:23

Dom笔记(五)的相关文章

DOM笔记(五):JavaScript的常见事件和Ajax小结

一.常见事件类型 1.鼠标事件 事件名称 说明 onclick 鼠标单击时触发 ondbclick 鼠标双击时触发 onmousedown 鼠标左键按下时触发 onmouseup 鼠标释放时触发 onmouseover 鼠标的光标移动到某对象上时触发 onmousemove 鼠标移动时触发 onmouseout 鼠标光标离开某对象时触发 ps:当单击一次鼠标左键的时候,将同时触发onclick.onmousedown.onmouseup三个事件,事件处理程序执行的先后顺序为:onmousedow

DOM笔记(四):HTML 5 DOM复杂数据类型

HTML 5 DOM定义了一下集合.列表等复杂的数据类型用于实现便捷的操作.相对于HTML 4 DOM,HTML 5 DOM增加了HTMLCollection.DOMTokenList.DOMStringMap.HTMLAllCollection. HTMLFormControlsCollection等. 一.HTMLCollection.HTMLAllCollection和HTMLFormControlsCollection 三个接口均用于表示一组元素组成的列表.HTMLAllCollecti

jQuery源码学习笔记五 六 七 八 转

jQuery源码学习笔记五 六 七 八 转 Js代码   <p>在正式深入jQuery的核心功能选择器之前,还有一些方法,基本都是数组方法,用于遴选更具体的需求,如获得某个元素的所有祖选元素啦,等等.接着是其缓存机制data.</p> <pre class="brush:javascript;gutter:false;toolbar:false"> //@author  司徒正美|なさみ|cheng http://www.cnblogs.com/ru

Caliburn.Micro学习笔记(五)----协同IResult

Caliburn.Micro学习笔记(五)----协同IResult 今天说一下协同IResult 看一下IResult接口 /// <summary> /// Allows custom code to execute after the return of a action. /// </summary> public interface IResult { /// <summary> /// Executes the result using the specif

5. 蛤蟆的计算机组成原理笔记五输入输出系统

5. 蛤蟆的计算机组成原理笔记五输入输出系统 本篇名言:"质朴却比巧妙的言辞更能打动我的心. --莎士比亚" 欢迎转载,转载请标明出:http://blog.csdn.net/notbaron/article/details/48037245 1.  输入输出系统 1.1             I/O 软件 (1) I/O 指令 CPU 指令的一部分 (2) 通道指令 通道自身的指令 1.2             I/O设备与主机信息传送的控制方式 1. 程序查询方式 2. 程序中

angular学习笔记(五)-阶乘计算实例(1)

<!DOCTYPE html> <html ng-app> <head> <title>2.3.2计算阶乘实例1</title> <meta charset="utf-8"> <script src="../angular.js"></script> <script src="script.js"></script> </

DOM笔记(十):JavaScript正則表達式

一.RegExp ECMAScript通过RegExp类型类支持正則表達式,语法和Perl类似: var exp = /pattern/flags; patternb部分是不论什么简单的或复杂的正則表達式:flags是每一个正則表達式所带的一个或者多个标志. 正則表達式的模式匹配支持三个标志: g:全局模式,即模式应用于整个字符串.而非在发现第一个匹配项时马上停止 i:不区分大写和小写模式 m:多行模式,即到达一行文本末尾是还会继续茶查找下一行中是否存在与模式匹配的项. 1.创建正則表達式 Ja

ollydbg使用笔记(五)

OllyDbg 使用笔记 (五) 参考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 pixtopainbook安装包 下载地址  http://pan.baidu.com/s/191ArG pixtopainbook 破解 pixtopainbook是一个电话簿软件,未注册版本,最多只能添加3个组,每个组最多添加4个人. 去除添加人数跟组数限制 ollydbg 加载 ,按F9运行. 如果OD暂停,在下面出现"异常 E06D7363 - 使用Shift+F7/F8/F9来忽略程序

NLTK学习笔记(五):分类和标注词汇

[TOC] 词性标注器 之后的很多工作都需要标注完的词汇.nltk自带英文标注器pos_tag import nltk text = nltk.word_tokenize("And now for something compleyely difference") print(text) print(nltk.pos_tag(text)) 标注语料库 表示已经标注的标识符:nltk.tag.str2tuple('word/类型') text = "The/AT grand/J

Android笔记(五):Android中的Radio

原文地址:http://irving-wei.iteye.com/blog/1076097 上篇介绍了CheckBox,这节,将接触到的是RadioGroup和RadioButton. 它们的关系是:一个RadioGroup对应多个RadioButton,而一个RadioGroup中的RadioButton只能同时有一个被选中,它的选中值就是该RadioGroup的选中值. 这一节的代码运行效果图如下所示: 具体的代码编写过程如下: 首先在strings.xml中添加本程序所要用到的字符串: X