5事件DOM零级事件跟DOM二级事件
事件的行为传播,行为本身跟事件绑定没有关系;
1、全新认识事件(某一个具体的行为)
->行为本身:浏览器天生自带的一些行为操作->click,mouseover(mouseenter),mousemover,mouseout(mouseleave),mousedown,mouseup,mousewhell(鼠标滚轮滚动的事件行为),scroll,resize(window.onresize当前屏幕窗口大小改变的行为),focus,blur(文本框获取焦点和失去焦点),keydown,keyup,keypress,load...(在当前元素的私有属性上存储着呢)
->事件绑定:给元素的某一个行为绑定方法,当行为触发的时候执行对应的方法
//[DOM零级事件绑定]
// function fn(){
// console.log("ok");
// }
//oBox.onclick = fn;//->绑定方法的时候fn没有执行,当行为触发的时候,浏览器才会执行fn这个方法
//oBox.onclick = fn();//->在绑定方法的时候就把fn执行了,这里是把fn执行的返回结果undefined绑定给元素的点击行为(这样写是不行的)
// oBox.onclick = (function () {
// return function () {
//
// }
// })();//->绑定方法的时候就把自执行函数执行了,把它的返回值"匿名函数"绑定给元素的点击行为,当行为触发的时候,执行里面小的"匿名函数"
//[DOM二级事件绑定]
// oBox.onclick = function () {
// console.log(1);
// };
// oBox.onclick = function () {
// console.log(2);
// };//->当点击行为触发的时候,只把最后一次绑定的方法执行了,第一次绑定的方法并没有执行,"DOM零级事件绑定,只能给当前元素的某一个行为绑定一个方法,绑定的最后一个方法会把前面的所有绑定的方法给覆盖掉"
//->div#box 在当前元素所属累EventTarget的原型上,提供了两个方法:addEventListener/removeEventListener实现DOM二级事件绑定和移除绑定
//->DOM零级事件绑定和DOM二级事件绑定可以共存,不冲突(DOM和DOM2的事件处理机制是不一样的):DOM0起始就是对象的属性名和属性值操作的机制(onclick就是一个属性名,绑定的方法就是它的一个属性值,当行为触发的时候获取到属性值即可),DOM2的机制是使用了浏览器的事件池/事件队列的机制完成的
//一个只能绑定一个方法 一个是能绑定多个方法
//2、->DOM0中的事件行为在DOM2中依然可以进行使用,但是DOM2还单独的提了一些DOM0中没有的行为DOMContentLoaded
//3、DOM0事件绑定兼容所有的浏览器,而DOM2事件绑定兼容性特别差(IE6~8和标准浏览器之间的区别)
4、DOM0事件绑定在移除绑定方法的时候也有一些细节的问题需要重点考虑:移除:不需要管之前绑定的是啥方法;DOM2事件绑定,以后处理DOM2绑定的时候,需要"瞻前顾后":绑定的时候要想着我可能还会移除,所有我们绑定的方法基本上都是实名函数
//(function(){})===(function(){});//->false不是同一个堆内存地址
//->匿名函数不是同一个堆内存地址,移除不掉
oBox.addEventListener("click", function(){
console.log(1);
}, false);
oBox.addEventListener("click", function(){
console.log(1);
}, false);*/ /*//->绑定的方法基本上都是实名函数
function fn() {
console.log(1);
}
oBox.addEventListener("click", fn, false); oBox.removeEventListener("click", fn, false);*/
=================================================================================
//面试题:document.onload和$(document).ready()的区别?
//document.onload只有页面中的HTML结构、图片、文字等所有资源都加载完成才会触发onload这个行为,在同一个页面中只能使用一次;
//->因为document.onload是DOM0事件绑定,只能给其绑定一个方法(只能执行一次),onload就是所有资源都加载完成才会执行;
//->它也可以使用多次,需要使用DOM2级事件绑定
// window.addEventListener("load",function(){
// console.log(1);
// },false);
// window.addEventListener("load",function(){
// console.log(2);
// },false);
5事件DOM零级事件跟DOM二级事件的更多相关文章
- 深入理解DOM事件类型系列第五篇——文本事件
× 目录 [1]change [2]textInput [3]input[4]propertychange[5]兼容 前面的话 如果DOM结构发生变化,触发的是变动事件:如果文本框中的文本发生变化,触 ...
- 深入理解DOM事件类型系列第三篇——变动事件
× 目录 [1]删除节点 [2]插入节点 [3]特性节点[4]文本节点 前面的话 变动(mutation)事件能在DOM中的某一部分发生变化时给出提示,这类事件非常有用,但都只能使用DOM2级事件处理 ...
- js操作DOM动态添加和移除事件
非IE下,注意事件名不带on,如onclick为click 添加事件:DOM对象.addEventListener('事件名',函数名,true/false); 删除事件:DOM对象.removeEv ...
- JavaScript DOM高级程序设计 4.3控制事件流和注册事件侦听器--我要坚持到底!
一.事件流 我们通过下面一个实例,进行说明. <body> <h1>Event Flow</h1> <ul id="nav"> &l ...
- javascript中0级DOM和2级DOM事件模型浅析
Javascript程序使用的是事件驱动的设计模式,为一个元素添加事件监听函数,当这个元素的相应事件被触发那么其添加的事件监听函数就被调用: <input type="button&q ...
- JS基础--函数与BOM、DOM操作、JS中的事件以及内置对象
前 言 絮叨絮叨 这里是JS基础知识集中讲解的第三篇,也是最后一篇,三篇JS的基础,大多是知识的罗列,并没有涉及更难得东西,干货满满!看完这一篇后,相信许多正在像我一样正处于初级阶段的同学, ...
- React对比Vue(03 事件的对比,传递参数对比,事件对象,ref获取DOM节点,表单事件,键盘事件,约束非约束组件等)
import React from 'react'; class Baby extends React.Component { constructor (props) { super(props) t ...
- 整理之DOM事件阶段、冒泡与捕获、事件委托、ie事件和dom模型事件、鼠标事件
整理之DOM事件阶段 本文主要解决的问题: 事件流 DOM事件流的三个阶段 先理解流的概念 在现今的JavaScript中随处可见.比如说React中的单向数据流,Node中的流,又或是今天本文所讲的 ...
- javascript中0级DOM和2级DOM事件模型浅析 分类: C1_HTML/JS/JQUERY 2014-08-06 15:22 253人阅读 评论(0) 收藏
Javascript程序使用的是事件驱动的设计模式,为一个元素添加事件监听函数,当这个元素的相应事件被触发那么其添加的事件监听函数就被调用: <input type="button&q ...
随机推荐
- arp欺骗
arp欺骗原理 某机器A要向主机B发送报文,会查询本地的ARP缓存表,找到B的IP地址对应的MAC地址后,就会进行数据传输.如果未找到,则广播A一个ARP请求报文(携带主机A的IP地址Ia——物理地址 ...
- ExtJS 4 类系统
ExtJS 4的类系统(class system)进行了一次重大重构,ExtJS4的新架构就是基于这套新的类系统构建的,因此有必要先了解以下这个class system这篇文章分为四章 I: &quo ...
- [BZOJ 3238] [AHOI 2013] 差异 【后缀数组 + 单调栈】
题目链接:BZOJ - 3238 题目分析 显然,这道题就是求任意两个后缀之间的LCP的和,这与后缀数组的联系十分明显. 求出后缀数组后,求出字典序相邻两个后缀的LCP,即 Height 数组. 那么 ...
- cf B Inna and Candy Boxes
题意:输入n,然后输入n个数ai,再输入n个数bi,如果在1-ai中能找到两个数x,y,x和y可以相等,如果x+y=bi,答案加上x*y,否则减去1,让结果尽可能大,输出结果. #include &l ...
- JPA学习笔记
一.JPA基础1.1 JPA基础JPA: java persistence api 支持XML.JDK5.0注解俩种元数据的形式,是SUN公司引入的JPA ORM规范 元数据:对象和表之间的映射关系 ...
- BAT 批处理实现循环备份N天文件夹
@echo off set today=%date:~0,4%%date:~5,2%%date:~8,2% xcopy /E /I E:\aaa e:\test\%today% for /f &qu ...
- Extjs4中tabPanel
好文章引用:Extjs4 TabPanel例子 感谢原作者...
- 【HDOJ】2364 Escape
bfs.题目做的不细心,好多小错误.尤其注意起始点就是边界的情况.wa了八次. #include <iostream> #include <cstdio> #include & ...
- Apache HTTP Server mod_session_dbd模块mod_session_dbd.c 安全漏洞
漏洞名称: Apache HTTP Server mod_session_dbd模块mod_session_dbd.c 安全漏洞 CNNVD编号: CNNVD-201307-488 发布时间: 201 ...
- 暴力求解——除法 Division,UVa 725
Description Write a program that finds and displays all pairs of 5-digit numbers that between them u ...