分享

解决IE中clientX 2px偏差

 xpirit 2008-03-12
不同浏览器之间的兼容性问题,实在让人头痛,常常骂FireFox变态,但有时IE也让人窝火!

  event.clientX 和 event.clientY 据微软说是除窗口装饰及滚动条外的鼠标离窗口最右边和最上边的距离。但是他的计算却是从(2,2)开始的,而不是(0,0),这两个像素存在于 document.documentElement.clientLeft 里面。

  在标准模式(standards mode)下,clientX 是从 0 开始计算的,而在差异模式下(quirks mode,有没有更好的翻译?),是从2 开始的,但奇怪的是,测试两种模式都是从2,2 开始的。

  实际上,这个值是分别存在于 document.documentElement.clientLeft 和 document.body.clientLeft 。在 standards mode 下面,document.documentElement.clientLeft 值为 2,document.body.clientLeft 为 0 。在 quirks mode 下面正好相反 document.documentElement.clientLeft 为 0 ,document.body.clientLeft 值为2 。

  所以,想要得到准确的鼠标位置,必须:

  1. x=event.clientX-document.documentElement.clientLeft - document.body.clientLeft ;
  2. y=event.clientY-document.documentElement.clientTop - document.body.clientTop ;

  注意,以上代码仅适用于IE,firefox两个值都是undefined。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多