doc.on('mouseover', handleOver, null, {buffer:150});
var el = Ext.get(name+'-link');
var tid = 0, menu, doc = Ext.getDoc();
var handleOver = function(e, t){
if(t != el.dom && t != menu.dom && !e.within(el) && !e.within(menu)){
hideMenu();
}
};
在handerOver 中遍历e 的属性的时候找到了 widthin 的函数体
function (E,F){
var D = this[F?"getRelatedTarget":"getTarget"]();
return D&& Ext.fly(E).contents(D);
}
原来 函数可以这样调用 this["getTarget"]();
在 handOver 中测试 alert(e["getTarget"]());果然 能调用。
另外 :
within 函数 里用到了ext.fly 那么var handleOver = function(e, t)中的“事件对象e“就不是浏览器中的那个“原生态事件对象”
不知道是不是看到within 这个函数潜意识了产生恐惧了。还去查看函数体,还去看e到底是个什么对象,其实本来早就猜测是个 事件对象。还是不够自信,其实在10秒钟的时间内就应该完全看透这个函数。看到within的意思就应该立即猜测。
mozilla下的e.target 相当于 ie下的event.srcElement,
但细节上有区别,后者是返回一个html element
而e.target返回的是个节点
e.target.id = t.id =”bd“
,又看错一个字母。。。b 看成 ”h“