1.IE的x,y:设置或获取鼠标指针位置(触发的节点testid1),到ID为testid的父节点外边界的距离,其中不包括滚动条
显示IE的x坐标:
显示IE的y坐标:
注意:IE的x,y坐标不包括滚动距离scrollLeft,scrollTop,可见区域
2.ff的pageX: 设置或获取鼠标指针位置(触发的节点testid1),到页面文档的距离(包括滚动距离)以文档左上角为参考点,不是以浏览器左上角为参考点
兼容IE:event.clientX + document.body.scrollLeft==pageX
显示ff的pageX:
显示ff的pageY:
3. clientX 设置或获取鼠标指针位置(触发的节点testid1)到浏览器的距离(不包括滚动距离) 以浏览器左上角为参考点
显示clientX:
显示clientY:
4. 设置或获取鼠标指针位置(触发的节点testid1)到自身节点(testid1)的内边界的距离(包括滚动距离即不可见区域)
显示offsetX或ff的layerX:
显示offsetY或ff的layerY:
5. screenX,screenY 设置或获取鼠标指针位置(触发的节点testid1)到屏幕的距离
显示screenX:
显示screenY:
1. ie的x,y是以事件触发元素的父元素外界为参考点(不包括滚动距离)
2. FF的pageX,pageY是以body元素为参考点(所以肯定包括滚动距离)
3. ie和ff的clientX,clientY以浏览器左上角为参考点(所以肯定不包括滚动距离)
4. ie的offsetX,offsetY和ff的layerX,layerY以事件触发元素内界的左上角为参考点(肯定包括滚动距离) 当有边框时,可能出现负数
滚动距离的产生就是子元素的高度(或宽度)大于父元素的高度(或宽度)时 style.overflow的设置
js拖动层函数写完,发现鼠标不能快速拖动,稍微一快就会跑到层外面去,原因在这里:
当鼠标按下去的时候应该调用函数 obj.setCapture() 来锁定鼠标输入时间只针对当前层;
当鼠标放开时调用 obj.releaseCapture() 来释放锁定。
obj.setCapture()
函数功能:该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。
obj.releaseCapture()
函数功能:该函数从当前线程中的窗口释放鼠标捕获,并恢复通常的鼠标输入处理。捕获鼠标的窗口接收所有的鼠标输入(无论光标的位置在哪里),除非点击鼠标键时,光标热点在另一个线程的窗口中。
函数原型:BOOL ReleaseCapture(VOlD)
参数:无。
返回值:如果函数调用成功,返回非零值;如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetlastError函数。
备注:应用程序在调用函数SetCaPture之后调用此函数。