兼容各浏览器的event以及srcElement,fromElement,toElement属性

2010-07-06 23:23:18.0

在 IE 中获取事件对象很容易,直接用 event,event.srcElement,event.fromElement,event.toElement 就行了。在 FireFox 中获得触发事件的元素可以用 event.target,但其他两个 fromElement 和 toElement ,属于IE的专属方法,如果要兼容IE的用法就要费些周折了

虽然IE经常我行我素,但无可否认,在这里,srcElement,fromElement,toElement.这三个方法很好用!

所以,为了保持一致的使用方式,也为了保持原有的使用习惯,我们来为非IE浏览器也加上这三个方法,我们通过继承prototype来实现这三个函数

js添加事件attachEvent和addEventListener的用法

2010-06-23 13:36:34.0

一般我们在js中添加事件,是这样子的

obj.onclick=method

这种绑定事件的方式,兼容主流浏览器,但如果一个元素上添加多次同一事件呢?

obj.onclick=method1;
obj.onclick=method2;
obj.onclick=method3;

如果这样写,那么只有最后绑定的事件,这里是method3会被执行,这个时候我们就不能用onclick这样的写法了,主角改登场了,在IE中我们可以使用attachEvent方法

jQuery的unbind()函数详解

2010-06-07 19:53:21.0

jQuery的绑定事件非常方便,有bind、unbind、live、one,还有它帮你把一些常用的事件给单独了出来,比如控件的onclick事件,我们绑定onclick事件的时候只需要

$("#testButton").click(function() {
alert("I'm Test Button");
});

详细的可以参考我写过的jQuery事件机制

jQuery替换element元素上已经绑定的事件

2010-06-05 14:31:18.0

jQuery如何重新绑定已经绑定的事件?虽然我们现在推荐行为分离,渐进增强,但在很多遗留系统里还是存在很多这样的代码

<input type="button" value="ClickMe" id="btn1" onclick="foo()" />

就是直接在DOM元素上绑定事件

这样做有很多缺点

1.代码高度耦合

2.增加HTML大小

3.书写不了逻辑性很强的代码

jQuery事件机制

2010-06-03 20:11:01.0

jquery是一款优秀的JavaScript框架,上次我讲了下jquery如何绑定事件,更多的是讲解jQuery的实现方式,这里再次介绍下jQuery的事件机制

浏览器事件嗅探技术

2010-05-31 20:18:59.0


上一次我在博客中写了篇关于<<浏览器事件检测>>的文章,里面有提到一个方法,今天在网上闲逛,看到一篇详细讨论这个的文章,转载一下

浏览器事件检测

2010-05-29 18:40:40.0

给浏览器绑定事件有时候是非常痛苦的事情,不同的浏览器提供不尽相同的功能的同时,也提供了不同的事件。例如,IE 系列的浏览器支持 mouseenter/mouseleave 事件;非IE浏览器只支持mouseover/mouserout.Opera 不支持 contextmenu

常用的手段是判断浏览器的user-agent来区分不同的浏览器

然后再根据不同的浏览器绑定事件

基于浏览器嗅探,这都不是完美的解决方案

Juriy Zaytsev

javascript事件系统的发展史

2010-05-15 22:37:45.0


一个完整的事件系统,通常存在以下三个角色:

  • 事件对象,用于储存事件的状态。
  • 事件源对象,当前事件在操作的对象,如元素节点,文档对象,window对象,XMLHttpRequest对象等。
  • 事件监听器,当一个事件源生成一个事件对象时,它会调用相应的回调函数进行操作。在IE中,事件对象恒为全局属性window.event的分身。

在w3c没有把其DOM 模型引入网页时,netscape与微软已经逼不及待到快他们熟悉的语言中把相关的DOM模型搞进来了。这其实也怪javascript之父忙于把抄袭其他语言,忽略了自身事件系统的建设。从此世界被划分为两大阵营了。