当前位置: 首页 > 图文教程 > 网络编程 > Javascript > extjs 为某个事件设置拦截器

Javascript
javascript 实现的类似hao123的多邮箱登录效果
不错的用resizeTo和moveTo两个函数实现窗口的“打乒乓球”效果
出现“不能执行已释放的Script代码”错误的原因及解决办法
“不能执行已释放的Script代码”错误的原因及解决办法
javascript入门·对象属性方法大总结
javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
JavaScript 入门·JavaScript 具有全范围的运算符
用javascript实现代替marquee的滚动字幕效果代码
[原创]仿google adsense颜色选择器代码,从中易广告联盟程序提取
greenbrower用到的function.js代码集合
javascript flash下fromCharCode和charCodeAt方法使用说明
内部的小页面,用层制作,随机变色
javascript简写效果“神秘的眼睛”
用js写“算24”游戏的思路分析与实现代码
[原创]js循环输出图片,不足的要补0
json简单介绍
javascript 获取网页参数系统
[原创]js判断ie方法集锦(含正则)代码短小经典
javascript SocialHistory 检查访问者是否访问过某站点
[原创]js判断是否有中文的脚本_js判断中文方法集合

Javascript 中的 extjs 为某个事件设置拦截器


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-20   浏览: 425 ::
收藏到网摘: n/a

Ext.util.Observable有一个重要的功能,可以为某个事件设置拦截器,统一管理方法的处罚。使用capture()和releaseCapture()来实现这个功能。 我们先来自定义一个事件:
复制代码 代码如下:

person = function(name) {
this.name = name;
this.addEvents("walk");
}
Ext.extend(person, Ext.util.Observable, {
info: function(event) {
return this.name + 'is' + event + 'ing.';
}
});
var person = new person('张铭诺');
person.on('walk', function() {
Ext.Msg.alert('event', person.name + '在走啊走啊。');
});

然后我们再定义一个按钮用来触发这个walk事件:
复制代码 代码如下:

var btn = new Ext.Button({
id: 'walk',
text: '触发事件按钮',
renderTo: Ext.getBody()
});
btn.on('click', function() {
person.fireEvent('walk');
});

当点击按钮时触发事件,效果如下图所示:

现在我们使用capture()函数拦截事件的触发,如下面的代码所示:
复制代码 代码如下:

var btn2 = new Ext.Button({
id: 'cc',
text: '拦截事件',
renderTo: Ext.getBody()
});
btn2.on('click', function() {
Ext.util.Observable.capture(person, function() {
alert('fsdjhf');
return true;
});
});

这时单击btn2按钮,发现弹出对话框后还会触发事件,郁闷。。。。现在将最后一行代码改为return false试试?事件被拦截成功了吧!
  这样就给我们一个选择的机会,通过控制capture()中处理函数的返回值来决定是否继续执行某个时间的监听函数,还是直接中止该事件的发生。
我们还可以为一个对象设置多个capture()拦截函数,这些拦截函数会形成一个处理链条,只要其中任何一个拦截函数返回false,就会中止处理过程。
releaseCapture()函数是capture()函数的反向操作,它会一次性清除fireEvent()上所有的拦截函数,不过我们无法通过它准确的删除某一个拦截函数。一旦执行了releaseCapture(),那么之前设置的所有拦截函数就都失效了。