我需要找到一个事件的位置(鼠标悬停在一个按钮上),用于火狐扩展。 我一直在使用
var obj = $mb(e.target,doc).offset();
var left = obj.left;
var top = obj.top;
但问题是它返回的值是屏幕中事件的位置而不是页面的位置,也就是它不考虑滚动位置{在火狐中} ..(但在Google Chrome中它工作)。
然后我用鼠标位置。
var obj_left = (window.Event) ? e.pageX : event.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
但问题是它根据导致事件的鼠标位置返回不同的值(按钮两端的相同按钮的值不同),但在第一种情况下,即使它返回屏幕位置,它也会返回单个值事件(两端按钮的单个值)。
我需要的是事件的返回值应该是相同的并且应该考虑滚动位置
答案 0 :(得分:1)
Firefox中的鼠标事件同时具有pageX
和clientX
属性(请分别参阅https://developer.mozilla.org/en/DOM/event.pageX和https://developer.mozilla.org/en/DOM/event.clientX处的文档)。似乎pageX
是您想要的 - 相对于当前页面的位置,无论滚动。 pageX
是非标准的,可能未在Chrome中实现,但jQuery似乎以跨浏览器的方式提供此属性,请参阅http://api.jquery.com/event.pageX/。