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;
}
}
}
}

时间: 2024-11-02 07:26:47

04.javascript事件绑定的相关文章

javascript 事件绑定方法与兼容ie ff解决办法

网页特效 事件绑定方法与兼容ie ff解决办法 var t = document.getelementbyid("tab1"); t.onclick = function tst(){ alert(''); } 第二种方法 var tb = document.getelementbyid("tab1"); if(window.addeventlistener){ // mozilla, netscape, firefox td_value.addeventliste

javascript事件绑定学习要点_基础知识

事件绑定分为两种:一种是传统事件绑定(内联模型,脚本模型),一种是现代事件绑定(DOM2级模型).现代事件绑定在传统绑定上提供了更强大更方便的功能. 一 传统事件绑定的问题 传统事件绑定中的内联模型不做讨论,基本很少去用.先来看一下脚本模型,脚本模型将一个函数赋值给一个事件处理函数.传统绑定如: window.onload=function(){ var box=document.getElementById('box'); box.onclick = function(){ alert('Le

浅谈JavaScript事件绑定的常用方法及其优缺点分析_javascript技巧

传统方式  element.onclick = function(e){ // ... };  1.  传统绑定的优点 非常简单和稳定,可以确保它在你使用的不同浏览器中运作一致 处理事件时,this关键字引用的是当前元素,这很有帮组 2. 传统绑定的缺点 传统方法只会在事件冒泡中运行,而非捕获和冒泡 一个元素一次只能绑定一个事件处理函数.新绑定的事件处理函数会覆盖旧的事件处理函数 事件对象参数(e)仅非IE浏览器可用 W3C方式  element.addEventListener('click'

JavaScript 事件绑定及深入_基础知识

事件绑定分为两种: 一种是传统事件绑定(内联模型/脚本模型);上一章内容; 一种是现代事件绑定(DOM2级模型);现代事件绑定在传统事件绑定基础上提供了更强大的功能; 一 传统事件绑定的问题 // 脚本模型将一个函数赋值给一个事件处理函数; var box = document.getElementById('box'); // 获取元素; box.onclick = function(){ // 元素点击触发事件; alert('Lee'); } // 问题一:一个事件处理函数触发两次事件;

Javascript事件绑定的几种方式

 Javascript的事件绑定主要有四种方法(一下在IE中运行正常,但不保证其他浏览器):   [注:onXXX为某一事件,fun为某一function,domId为某一DOM对象id,event类型见后边附录.] 1.在DOM中,直接用onXXX="fun();"进行绑定  2.在Javascript代码中用 DOM对象.onXXX=fun 进行绑定 3.用 DOM对象.attachEvent("onXXX",fun) 进行绑定 4.用<script fo

详解javascript事件绑定使用方法_javascript技巧

由于html是从上至下加载的,通常我们如果在head部分引入javascript文件,那么我们都会在javascript的开头添加window.onload事件,防止在文档问加载完成时进行DOM操作所出现的错误.如果有多个javascript文件,那么极有可能出现多个window.onload事件,但是最后起作用的只有一个,这时候就需要使用事件绑定来解决这个问题了. IE方式 attachEvent(事件名称, 函数),绑定事件处理函数 detachEvent(事件名称, 函数),解除绑定 DO

javaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序整理总结_基础知识

抽空学习了下javascript和jquery的事件设计,收获颇大,总结此贴,和大家分享. (一)事件绑定的几种方式 javascript给DOM绑定事件处理函数总的来说有2种方式:在html文档中绑定.在js代码中绑定.下面的方式1.方式2属于在html中绑定事件,方式3.方式4和方式5属于在js代码中绑定事件,其中方法5是最推荐的做法. 方式1: HTML的DOM元素支持onclick.onblur等以on开头属性,我们可以直接在这些属性值中编写javascript代码.当点击div的时候,

JavaScript 事件绑定

  事件绑定分为两种:一种是传统事件绑定(内联模型,脚本模型),一种是现代事件绑定(DOM2级模型).现代事件绑定在传统绑定上提供了更强大更方便的功能.   一.传统事件绑定的问题 传统事件绑定有内联模型和脚本模型,内联模型我们不做讨论,基本很少去用.先来看一下脚本模型,脚本模型将一个函数赋值给一个事件处理函数. var box = document.getElementById('box');//获取元素 box.onclick = function () {//元素点击触发事件 alert(

javascript 事件绑定问题_javascript技巧

子页面HTML: 复制代码 代码如下: <input type="checkbox" name="check" onclick="CheckedBox(this)" value="a" /> 子页面JS: 复制代码 代码如下: function CreateIOC(text,value) { var o = document.createElement("a"); o.id = value; o