K_Reverter的网页开发记录

要么不做,要么就当作艺术品来做!

导航

求助:关于IE之中获取鼠标位置

        实在抱歉,很少有技术求助类型的帖子被发到博客园首页这个万众瞩目的地方,不过作为一个使用JavaScript开发了多年的开发人员,我觉得这个问题还是有一定的深度的,而且,我确实被这个问题困扰了很久,因此,特别发布求助贴到博客园首页,希望这个问题不会被资深的JavaScript专家觉得太过简单而直接忽略。

        这个问题主要是:如何在IE之中获得鼠标事件相对于某个层的位置,这个问题看似简单,不过下面的这个网页的这种情况我却总也没有弄明白,请不辞辛苦,打开此网页看看(源码已经被我简化的不能再简化了)

http://www.step1.cn/position.html

        在这个网页之中,鼠标移动的时候,网页的标题栏理论上讲应该实时显示鼠标位置相对于黑框左上角的位置(有时候会显示null,无所谓),可是我们将鼠标从红色方块慢慢移动到绿色方块,会发现显示的值突然变大,也就是说鼠标在绿色区域移动的时候,我的计算位置的函数getEventPosition是不正确的。

        关键是:在这种情况下我怎样才能获取到鼠标事件发生的位置呢?

        如果你试图给我解惑,请注意以下几点:

        1.不允许更改页面的任何DOM元素和属性(包括DTD),请仅仅通过更改getEventPosition函数的计算方法来计算出精确的位置,因为我需要是是一个能普遍适用于多种页面的算法;

        2.以上的页面和函数仅仅使用来表现这个问题的而编写的,为了代码简短,删除了很多内容,而且只支持IE浏览器;

        3.我说的这个现象在IE6和IE7之中同时存在,IE8我机器上没有安装,因此没有测试;

        4.这个问题的症结在于,当鼠标在绿色的层上滑动的时候,event.srcElement是绿色的层,可是event.offsetX却不是鼠标相对于绿色层的位置(似乎是鼠标相对于黑框层的位置),这样就计算出现了偏差,看起来绿色的层的offsetLeft被计算了两遍;

        如果能够理解这个问题,请千万帮我解惑,万分感谢!

posted on 2009-05-21 01:45  K_Reverter  阅读(2347)  评论(10编辑  收藏  举报