1 /**
  2  * @fileOverview event-mouseenter
  3  * @author yiminghe@gmail.com
  4  */
  5 KISSY.add('event/mouseenter', function (S, Event, DOM, UA, special) {
  6     S.each([
  7         { name:'mouseenter', fix:'mouseover' },
  8         { name:'mouseleave', fix:'mouseout' }
  9     ], function (o) {
 10         special[o.name] = {
 11             // fix #75
 12             onFix:o.fix,
 13             // all browser need
 14             delegateFix:o.fix,
 15             handle:function (event, handler, data) {
 16                 var currentTarget = event.currentTarget,
 17                     relatedTarget = event.relatedTarget;
 18                 // 在自身外边就触发
 19                 // self === document,parent === null
 20                 // relatedTarget 与 currentTarget 之间就是 mouseenter/leave
 21                 if (!relatedTarget ||
 22                     (relatedTarget !== currentTarget &&
 23                         !DOM.contains(currentTarget, relatedTarget))) {
 24                     // http://msdn.microsoft.com/en-us/library/ms536945(v=vs.85).aspx
 25                     // does not bubble
 26                     // 2012-04-12 把 mouseover 阻止冒泡有问题!
 27                     // <div id='0'><div id='1'><div id='2'><div id='3'></div></div></div></div>
 28                     // 2 mouseover 停止冒泡
 29                     // 然后快速 2,1 飞过,可能 1 的 mouseover 是 2 冒泡过来的
 30                     // mouseover 采样时跳跃的,可能 2,1 的 mouseover 事件
 31                     // target 都是 3,而 relatedTarget 都是 0
 32                     // event.stopPropagation();
 33                     return [handler.fn.call(handler.scope || currentTarget, event, data)];
 34                 }
 35                 return [];
 36             }
 37         };
 38     });
 39 
 40     return Event;
 41 }, {
 42     requires:["./base", "dom", "ua", "./special"]
 43 });
 44 
 45 /**
 46  * yiminghe@gmail.com:2011-12-15
 47  * - 借鉴 jq 1.7 新的架构
 48  *
 49  * 承玉:2011-06-07
 50  * - 根据新结构,调整 mouseenter 兼容处理
 51  * - fire('mouseenter') 可以的,直接执行 mouseenter 的 handlers 用户回调数组
 52  */
 53