在IE 7、8、9,chrome和Firefox中,mouseHandler上的pageX / Y属性引用相对于页面顶部的位置,而clientX / Y属性给出相对于当前视口的位置。在IE 10中,pageX / Y看起来与clientX / Y相同。是否有已知的解决方法?

您可以尝试使用此http://jsfiddle.net/FCTUW/2/,只需滚动到页面右下角的底部,然后将鼠标移到灰色矩形上即可。

这是用于查找坐标的代码,因为SO需要代码...

canvas.mousemove(function(e){
var pageCrds = '('+ e.pageX +', '+ e.pageY +')',
    clientCrds = '('+ e.clientX +', '+ e.clientY +')';


有谁知道为什么要进行此更改,或者如何获取正确的页面坐标?

最佳答案

我看不到与您相同的结果。您可能未在查看脚本的实际结果-或您不小心两次编写了相同的属性。无论哪种方式,我得到的结果都是来自运行演示的Windows 8上的Internet Explorer 10。



这与关于clientpage值的MSDN states一致:


  客户坐标不反映页面的滚动偏移量。若要获取相对于文档左上角的鼠标指针坐标,请使用pageX和pageY属性。

09-25 18:41