我们知道 对于 事件处理 ,若想 组织浏览器的默认事件处理程序运行 ,则可以在自定义的事件处理最后 return false;
如 如果 想要 点击 链接 不跳转页面, 传统方式 为
a.οnclick=function() { //todo return false; }
如果 想用 高级的 方式 ,则要 ie 和 w3c实现区别
a.οnclick=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(); } });