Javascript 鼠标中心交叉浏览器
我在将onMouseover附加到整个元素及其子元素时遇到了一些问题,因此我决定看看基于鼠标位置的Microsoft onMouseenter,现在我想知道是否有跨浏览器解决方案,或者至少有一个修复程序可以将onMouseover应用到div子元素 另外,我不应该为此使用jQuery或其他框架Javascript 鼠标中心交叉浏览器,javascript,events,Javascript,Events,我在将onMouseover附加到整个元素及其子元素时遇到了一些问题,因此我决定看看基于鼠标位置的Microsoft onMouseenter,现在我想知道是否有跨浏览器解决方案,或者至少有一个修复程序可以将onMouseover应用到div子元素 另外,我不应该为此使用jQuery或其他框架 感谢您的任何想法。如果您愿意使用jQuery之类的库,则有一个跨浏览器的鼠标输入事件: 如果您愿意使用诸如jQuery之类的库,则会出现一个跨浏览器的mouseenter事件: 编辑:这里有一个比我原来的
感谢您的任何想法。如果您愿意使用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不应该用于我的案例:您的案例的情况如何,那么,我正在构建一个小部件,而轻量级、无冲突是最重要的因素。