`
yiminghe
  • 浏览: 1475619 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Ext.EventObject 的 默认事件阻止

阅读更多

 

我们知道 对于 事件处理 ,若想 组织浏览器的默认事件处理程序运行 ,则可以在自定义的事件处理最后 return false;

 

如 如果 想要 点击 链接 不跳转页面, 传统方式 为

a.onclick=function() {
 //todo

  return false;
}
 

如果 想用 高级的 方式 ,则要 ie 和 w3c实现区别

 

a.onclick=function(e) {
 var ev=e||window.event;

  if(ev.preventDefault)
      ev.preventDefault();
   else
      ev.cancel=true;

}
 

而对于 Extjs ,由于 它给你的事件 已经是包装过的事件,经试验 并不支持 传统的 return false; 方法。

 

Ext.get(a).on('click',function() {
//todo


//不行的,一样会跳转
return false;

});

 

分析 它是 注册 dom 事件处理时 ,对于 我们提供的事件处理函数 直接   handler(evt) ;而没有用 return handler(evt) ;所导致。

 

 

这也不是什么大问题 ,使用高级方法的话 就不有问题了

 

 

Ext.get(a).on('click',function(e) {
//todo


//extjs 已经对ie兼容处理了
e.preventDefault();

});

 

 

ps : 一般来说 我们要阻止默认事件的同时也要阻止事件冒泡 ,那么 直接用 e.stopEvent() 就可以了 。

 

 

关于右键阻止问题:

 

右键 用 contextmenu 事件吧 ,click 用于左键点击事件 ,硬要判断那个鼠标键的话用

mousedown,不过右键是不能阻止

 

//没用,用 contextmenu 事件
Ext.get("resume_panel").on("mousedown",function(e){
if(e.button==2){
e.stopEvent();
}
});

 

 

 

分享到:
评论
5 楼 atian25 2009-07-24  
yiminghe 写道
atian25 写道
嗯,但是Element似乎没有封装contextmenu事件


?什么叫没封装,就是个事件啊

xx.on('contextmenu',function(e){
  //block it
  e.stopEvent();
})


-.-!! 晕...丢脸大了这次...看Element源码没看到这事件...忘记了是js本身的..
4 楼 yiminghe 2009-07-24  
atian25 写道
嗯,但是Element似乎没有封装contextmenu事件


?什么叫没封装,就是个事件啊

xx.on('contextmenu',function(e){
  //block it
  e.stopEvent();
})
3 楼 atian25 2009-07-24  
嗯,但是Element似乎没有封装contextmenu事件
2 楼 yiminghe 2009-07-24  
atian25 写道
似乎取消右键默认菜单,用click里面判断,e.preventDefault();不行

右键 用 contextmenu 事件吧 ,click 用于左键点击事件 ,硬要判断那个鼠标键的话用

mousedown,不过右键是不能阻止

//没用的,阻止用contextmenu
Ext.get("resume_panel").on("mousedown",function(e){
if(e.button==2){
e.stopEvent();
}
});
1 楼 atian25 2009-07-24  
似乎取消右键默认菜单,用click里面判断,e.preventDefault();不行

相关推荐

    extjs帮助文档

    - `Ext.EventObject.preventDefault()`:阻止默认事件行为。 - `Ext.EventObject.stopPropagation()`:阻止事件冒泡。 #### 十三、Ext.CompositeElement类(第16页) - **概述**:Ext.CompositeElement类用于表示...

    extjs帮助文档pdf版

    - `Ext.EventObject.stopEvent()`: 同时阻止默认行为和事件冒泡。 #### 13. Ext.CompositeElement 类 (P.16) - **概述**:提供了操作一组DOM元素的方法。 - **常用方法**: - `Ext.CompositeElement.add(elements...

    EXT JS 3.0 Core Class Diagram

    3. `Ext.EventObject`: 事件对象,封装了浏览器原生事件。 - `getCharCode()`, `getKey()`: 获取键盘事件的字符编码和键码。 - `getPageX()`, `getPageY()`: 获取鼠标事件相对于页面的位置。 - `getRelatedTarget...

    ext输入框点击回车键直接进入查询

    // 阻止默认的表单提交行为 doQuery(field.getValue()); // 调用查询函数 } }); ``` 3. **定义查询函数**:`doQuery`是自定义的查询函数,根据实际应用的需求来编写。这通常涉及到向服务器发送请求,获取数据...

    Ext_类的详细介绍

    - **功能**:同时调用 `preventDefault()` 和 `stopPropagation()`,从而同时阻止默认行为和事件传播。 7. **onAvailable()** - **参数**:`id`、`fn`、`scope`。 - **功能**:当指定 ID 的 HTML 元素变得可用时...

    EXTJS事件实例源码

    8. **事件冒泡**:EXTJS中的事件默认会向上冒泡到父容器,可以通过`stopPropagation`方法阻止这一行为。 9. **事件分发**:EXTJS的`relayEvents`方法可以将一个组件的事件转发到另一个组件,实现事件的统一管理。 ...

Global site tag (gtag.js) - Google Analytics