Javascript 鼠标中心交叉浏览器

Javascript 鼠标中心交叉浏览器,javascript,events,Javascript,Events,我在将onMouseover附加到整个元素及其子元素时遇到了一些问题,因此我决定看看基于鼠标位置的Microsoft onMouseenter,现在我想知道是否有跨浏览器解决方案,或者至少有一个修复程序可以将onMouseover应用到div子元素 另外,我不应该为此使用jQuery或其他框架 感谢您的任何想法。如果您愿意使用jQuery之类的库,则有一个跨浏览器的鼠标输入事件: 如果您愿意使用诸如jQuery之类的库,则会出现一个跨浏览器的mouseenter事件: 编辑:这里有一个比我原来的

我在将onMouseover附加到整个元素及其子元素时遇到了一些问题,因此我决定看看基于鼠标位置的Microsoft onMouseenter,现在我想知道是否有跨浏览器解决方案,或者至少有一个修复程序可以将onMouseover应用到div子元素

另外,我不应该为此使用jQuery或其他框架


感谢您的任何想法。

如果您愿意使用jQuery之类的库,则有一个跨浏览器的鼠标输入事件:


如果您愿意使用诸如jQuery之类的库,则会出现一个跨浏览器的mouseenter事件:

编辑:这里有一个比我原来的更好的解决方案。而是针对此.parentNode测试e.relatedTarget

似乎给出了准确的结果:

if(  e.relatedTarget !== this.parentNode ) return;
例如:

…所以你会:

el.onmouseover = function( e ) {
    // typical event obj fix

    if(  e.relatedTarget !== this.parentNode ) return;

    // This will only log to the console for the <div>
    console.log( e.target.tagName, e.relatedTarget.tagName );
};
现在,只有当事件的目标与应用处理程序的元素相同时,if后面的代码才会触发,从而使事件冒泡对该事件无效

请注意,这并不完美。如果有直接与容器内边缘对齐的内部元素,则如果鼠标在该点进入,则接收事件的元素可能是内部元素。需要调整。 编辑:这里有一个比我原来的更好的解决方案。而是针对此.parentNode测试e.relatedTarget

似乎给出了准确的结果:

if(  e.relatedTarget !== this.parentNode ) return;
例如:

…所以你会:

el.onmouseover = function( e ) {
    // typical event obj fix

    if(  e.relatedTarget !== this.parentNode ) return;

    // This will only log to the console for the <div>
    console.log( e.target.tagName, e.relatedTarget.tagName );
};
现在,只有当事件的目标与应用处理程序的元素相同时,if后面的代码才会触发,从而使事件冒泡对该事件无效

请注意,这并不完美。如果有直接与容器内边缘对齐的内部元素,则如果鼠标在该点进入,则接收事件的元素可能是内部元素。需要调整。

不,不幸的是,jQuery不应该用于我的案例:那么,您的案例的情况如何?我正在构建一个小部件,轻量级,没有冲突是最重要的因素。不,不幸的是,jQuery不应该用于我的案例:您的案例的情况如何,那么,我正在构建一个小部件,而轻量级、无冲突是最重要的因素。