04.javascript事件绑定

简介:

一、传统的方法:

// 例1:查找第一个<form>元素并为其绑定submit事件处理函数 document.getElementsByTagName(“form”)[0].onsubmit = function(e){ return stopDefault( e );//停止表单提交的默认行为 }; // 例2:为页面body元素绑定键盘敲击事件 document.body.onkeypress = myKeyPressHandler; // 例3:为页面加载完毕绑定事件 window.onload = function(){ … };   

二、W3C的方法(IE不支持):

// 例1:查找第一个<form>元素并为其绑定submit事件处理函数 document.getElementsByTagName(“form”)[0].addEventListener(‘click’,function(e){ return stopDefault( e );//停止表单提交的默认行为 }, false); // 例2:为页面body元素绑定键盘敲击事件 document.body.addEventListener(‘keypress’, myKeyPressHandler, false); // 例3:为页面加载完毕绑定事件 window.addEventListener(‘load’, function(){ … }, false);

三、IE绑定的方法:

// 例1:查找第一个<form>元素并为其绑定submit事件处理函数 document.getElementsByTagName(“form”)[0].attachEvent(‘onclick’,function(){ return stopDefault(); //停止表单提交的默认行为 },); // 例2:为页面body元素绑定键盘敲击事件 document.body.attachEvent(‘onkeypress’, myKeyPressHandler); // 例3:为页面加载完毕绑定事件 window.attachEvent(‘onload’, function(){ … });  

四、通用的方法:

 function addEvent(element, type, handler) { if (!handler.$$guid) { handler.$$guid = addEvent.guid++; //为每一个事件处理函数赋予一个独立的ID } //为元素建立一个事件类型的散列表 if (!element.events) { element.events = {}; } //为没对元素/事件建立一个事件处理函数的散列表 var handlers = element.events[type]; if (!handlers) { handlers = element.events[type] = {}; //存储已有的事件处理函数(如果已存在一个) if (element["on" + type]) { handelers[0] = element["on" + type]; //在散列表中存储该事件的处理函数 handelers[handler.$$guid] = handler; //赋予一个全局事件处理函数来处理所有工作 element["on" + type] = handleEvent; }; //创建独立ID的计数器 addEvent.guid = 1; function removeEvent(element, type, handler) { //从散列表中删除事件处理函数 if (element.events && element.events[type]) { delete element.events[type][handler.$$guid]; } function handleEvent(event) { var returnValue = true; //获取事件对象(IE使用全局的事件对象) event = event || fixEvent(window.event); //获取事件处理函数散列表的引用 var handlers = this.events[event.type]; //依次执行每个处理函数 for (var i in handlers) { this.$$handleEvent = handlers[i]; if (this.$$handleEvent(event) === false) { returnValue = false; } } return returnValue; }; //增加一些IE事件对象缺乏的方法 function fixEvent(event) { event.preventDefault = fixEvent.preventDefault; event.stopPropagation = fixEvent.stopPropagation; return event; } fixEvent.preventDefault = function () { this.returnValue = false; } fixEvent.stopPropagation = function () { this.cancelBubble = true; } } } }

目录
相关文章
|
4月前
|
Web App开发 JavaScript 前端开发
javascript onkeydown事件
javascript onkeydown事件
|
6月前
|
JavaScript 前端开发
js事件队列
js事件队列
157 55
|
4月前
|
JavaScript
js两种移除事件的方法
js两种移除事件的方法
59 3
|
1月前
|
JavaScript 前端开发 测试技术
盘点原生JavaScript中直接触发事件的方式
本文全面探讨了原生JavaScript中触发事件的多种方式,包括`dispatchEvent`、`Event`构造函数、`CustomEvent`构造器、直接调用事件处理器以及过时的`createEvent`和`initEvent`方法。通过技术案例分析,如模拟点击事件、派发自定义数据加载事件和实现提示框系统,帮助开发者掌握这些方法在实际开发中的应用,提升灵活性与兼容性。
44 3
|
5月前
|
JavaScript 前端开发
JavaScript 事件
JavaScript 事件
52 2
|
6月前
|
JavaScript 前端开发
JavaScript 事件的绑定
JavaScript 事件的绑定
64 0
|
3月前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
93 5
|
4月前
|
存储 JavaScript 前端开发
js事件队列
【10月更文挑战第15天】
83 6
|
5月前
|
JavaScript 前端开发
JavaScript HTML DOM 事件
JavaScript HTML DOM 事件
37 5
|
5月前
|
监控 JavaScript 前端开发

热门文章

最新文章