解决IE中clientX 2px偏差

来源:百度文库 编辑:神马文学网 时间:2024/04/29 16:00:15
不同浏览器之间的兼容性问题,实在让人头痛,常常骂变态,但有时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 。
所以,想要得到准确的鼠标位置,必须:
x=event.clientX-document.documentElement.clientLeft - document.body.clientLeft ;
y=event.clientY-document.documentElement.clientTop - document.body.clientTop ;
注意,以上代码仅适用于IE,firefox两个值都是undefined。