DOM——DOM事件

DOM0事件 

var oDiv = document.getElementById("div1");
当我们触发oDiv这个元素本身的click行为的时候,会让后面的function执行:不仅仅是执行,而且我们的浏览器还会默认为这个方法传递一个参数值-->我们一般会给它设置一个形参接收(当然是用arguments也可以获取到)-->"事件对象":包含了我们当前操作的这个事件中的相关的信息

事件对象e本身也存在兼容问题:在标准浏览器中是浏览器默认传递的形参值e、在IE6~8下我们使用的是全局对象window下的event属性 e=e||window.event;1、e.type 存储的是当前的事件行为类型,例如:"click"...2、e.target 存储的是事件源(当前事件发生在哪个元素上)  这个属性不兼容:e.srcElement  例如:e.target=e.target||e.srcElement;3、e.clientX/e.clientY:鼠标触发点距离当前屏幕窗口左上角的X和Y轴的偏移值4、e.pageX/e.pageY:鼠标触发点距离整个文档(第一屏)左上角的X和Y轴的偏移值  但是在IE下是不存在这个属性的  e.pageY=e.pageY||(e.clientY+(document.documentElement.scrollTop||document.body.scrollTop));5、e.preventDefault ? e.preventDefault() : e.returnValue = false; -->阻止事件的默认行为6、e.stopPropagation ? e.stopPropagation() : e.cancelable = true; -->组织事件的冒泡传播    oDiv.onclick = function (e) {        e = e || window.event;    }

默认行为的理解:拿a标签来说,天生点击的时候具有跳转链接的默认行为,如果我们只想实现点击,不想实现跳转,那么需要把默认行为禁止掉;    var oLink = document.getElementById("link1");    oLink.onclick = function (e) {        e = e || window.event;        alert(1);        //e.preventDefault ? e.preventDefault() : e.returnValue = false;        //href="javascript:;" 相当于在阻止它的默认行为    }

DOM2级事件
DOM二级事件:元素所属内置类EventTarget的原型上定义的两个方法:addEventListener、removeEventListener就是我们的DOM二级绑定事件的方法元素.addEventListener(eventType,eventFn,true/false) 默认一般都写false,让其在冒泡传播阶段发生;true让其在捕获传播阶段发生在IE6~8下不兼容我们的addEventListener这个方法--->attachEvent("on"+eventType,eventFn) 只有在冒泡阶段发生 (detachEvent移除事件绑定)
    var oDiv = document.getElementById("div1");
        oDiv.addEventListener("click", function () {
            console.log(this);//this-->oDiv
        }, false);

        oDiv.attachEvent("onclick", function () {
            console.log(this);//this-->window
        });

  

DOM二级事件相对于DOM0级事件的好处:1、DOM2级事件可以相对比较灵活的控制我们的传播机制2、DOM0级事件只能给一个元素的同一个事件类型绑定一个方法,绑定的第二个方法会把我们的第一个覆盖掉;而DOM2级事件可以给一个元素的同一个事件类型绑定多个不同的方法(这些方法都存在事件池中,当我点击的时候,这些方法都会一个个的执行);3、DOM0中的事件类型在DOM2中都可以使用,但是DOM2级事件绑定中提供了一些DOM0没有的事件类型:DOMContentLoaded(HTML结构加载完成)...
oDiv.addEventListener("click", function (e) {
        console.log(1);
    }, false);
    oDiv.addEventListener("click", function (e) {
        console.log(2);
    }, false);

//点击一下,就输出一次 1  2

 

window.onload和jQuery中的$(document).ready的区别:1、window.onload是当HTML结构、图片、文字等都加载完成才会执行;而ready是只要HTML结构加载完成就会执行;2、window.onload在页面中之能使用一次;而ready可以使用多次;原理:jQuery中的ready采用的是DOM2级事件绑定,绑定的是DOMContentLoaded这个方法;而window.onload采用DOM0级事件绑定,用的是onload事件;
 
时间: 2024-11-12 23:25:56

DOM——DOM事件的相关文章

整理之DOM事件阶段、冒泡与捕获、事件委托、ie事件和dom模型事件、鼠标事件

整理之DOM事件阶段 本文主要解决的问题: 事件流 DOM事件流的三个阶段 先理解流的概念 在现今的JavaScript中随处可见.比如说React中的单向数据流,Node中的流,又或是今天本文所讲的DOM事件流.都是流的一种生动体现.用术语说流是对输入输出设备的抽象.以程序的角度说,流是具有方向的数据. 事件流分事件冒泡与事件捕获 在浏览器发展的过程中,开发团队遇到了一个问题.那就是页面中的哪一部分拥有特定的事件? 可以想象画在一张纸上的一组同心圆,如果你把手指放在圆心上,那么你的手指指向的其

HTML DOM event 事件 (丫头, 好想你了)

HTML DOM event 事件, 用用就知道了 function isKeyPressed(eventssdasd)     // 这个地方其实无关紧要,就是定义一个名称而已, 不过为了好看, 最好还是写成 event{  if (event.altKey==1)                        // event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等,此处为检测 alt 键是否按下    {  // 此处的 event 必须写正确, 你可以

jacascript DOM变动事件

DOM变动事件 变动事件(MutationEvent)能在DOM中的某一部分发生变化时给出提示,这类事件非常有用,但都只能使用 DOM2 级事件处理程序,且由于浏览器兼容性不好,所以用的不广泛: 删除节点变动 删除节点时,涉及到 DOMNodeRemoved.DOMNodeRemovedFromDocument 和 DOMSubtreeModified 这三个事件:事件触发的先后顺序是 DOMNodeRemoved 事件.DOMNodeRemovedFromDocument 事件和 DOMSub

2014年辛星解读Javascript之DOM之事件及其绑定

我们通过DOM的事件能够对HTML的事件作出反应.就像我们用其它编程语言写GUI一样,那么HTML包含哪些事件呢?以下是几个常见的样例,比方网页已经完毕记载,图像完毕载入,鼠标移动到元素上方.输入文字被改变.表单提交.用户点击按键等等,还是蛮多的. 以下我们用实例来演示一下,看以下的HTML代码: <html> <p id = "tag" onclick="this.innerHTML ='小倩' ">辛星</p> </ht

漫谈js自定义事件、DOM/伪DOM自定义事件

一.说明.引言 我JS还是比较薄弱的,本文的内容属于边学边想边折腾的碎碎念,可能没什么条理,可能有表述不准确的地方,可能内容比较拗口生僻.如果您时间紧迫,或者JS造诣已深,至此您就可以点击右侧广告(木有?则RSS或盗版)然后撤了. 事件是个大课题,真要从断奶开始讲起的话,可以写个12期的连载.关于JS事件的文章(类似DOM/BOM事件模型,IE与其他浏览器事件差异,DOM1/DOM2事件定义等)落叶般随处可见.熟豆子反复炒一点意思都没有,因此,这里谈谈自己感兴趣的自定义事件以及周边. 所谓自定义

DOM的事件模拟(摘)

要确定浏览器是否支持DOM规定的HTML事件,可以使用如下代码: var isSupported = document.implementation.hasFeature("HTMLEvents", "2.0"); 只有根据DOM2级事件实现这些事件的浏览器才返回true,以非标准方式支持这些事件的浏览器会返回false; 关于document.implementation的其它方法以及它们各自的返回值,可以查看MDN上的说明>> 目前主流的浏览器(非I

javascript系列之DOM(三)---事件

事件是javascript跳动的心脏,是DOM所有成分结合的万金油.当我们在WEB 上进行某些交互时,事件也就发生了.点击某些内容,鼠标经过特定元素,按下某些按键,改变窗口.当然还可能是浏览器上某个页面加载完毕.通过 javascript你可以监听特定事件的发生,为事件绑定处理函数. DOM事件流 在DOM中,当某一个特定的HTNL元素产生事件时,该事件会在该元素节点与根节点之间按特定的顺序传播,所经过的节点都会监听到该事件(但不一定执行该 事件对应的动作,因为未绑定事件处理函数),这个传播过程

关于动态生成dom绑定事件失效的原因

之前做项目都是直接用jquery的bind绑定事件,不过当时都不是动态生成dom元素,而是已经页面中原本存在的dom元素进行事件绑定,最近在测试给动态生成的dom绑定事件的时候发现事件失效,于是就测试了一下: 1.事件失效的原因:(1)bind事件绑定只对dom中存在的元素有效,对于我们后来动态增加的元素是监测不到,所以绑定不了 (2)同样,当你使用var aa = document.getElementsByTagName("动态生成的元素");来获取动态生成的元素的时候也是获取不到

js自定义事件、DOM/伪DOM自定义事件

一.说明.引言 我JS还是比较薄弱的,本文的内容属于边学边想边折腾的碎碎念,可能没什么条理,可能有表述不准确的地方,可能内容比较拗口生僻.如果您时间紧迫,或者JS造诣已深,至此您就可以点击右侧广告(木有?则RSS或盗版)然后撤了. 事件是个大课题,真要从断奶开始讲起的话,可以写个12期的连载.关于JS事件的文章(类似DOM/BOM事件模型,IE与其他浏览器事件差异,DOM1/DOM2事件定义等)落叶般随处可见.熟豆子反复炒一点意思都没有,因此,这里谈谈自己感兴趣的自定义事件以及周边. 所谓自定义