Javascript Sys.UI.DomElment.getLocation在Google Chrome中返回的值与在其他浏览器中返回的值不同

Javascript Sys.UI.DomElment.getLocation在Google Chrome中返回的值与在其他浏览器中返回的值不同,javascript,html,dom,cross-browser,Javascript,Html,Dom,Cross Browser,我在google chrome中的canvas元素遇到了一些问题 我有一张画布,上面有多个矩形。我跟踪名为targets的数组中的矩形。每次鼠标在画布上移动时,我都会调用hover函数来检查鼠标是否位于其中一个矩形的顶部 如果它位于矩形的顶部,则应使用纯色填充该矩形 请看下面的javascript行: function hover() { var location = Sys.UI.DomElement.getLocation(canvasElement); // loop t

我在google chrome中的canvas元素遇到了一些问题

我有一张画布,上面有多个矩形。我跟踪名为targets的数组中的矩形。每次鼠标在画布上移动时,我都会调用hover函数来检查鼠标是否位于其中一个矩形的顶部

如果它位于矩形的顶部,则应使用纯色填充该矩形

请看下面的javascript行:

function hover() {
    var location = Sys.UI.DomElement.getLocation(canvasElement);

    // loop through all rectangles in the targets array and caluclate if the mouse is on top op any of these rectangles.
}
这在IE和firefox中运行良好

但在google chrome中,当我在区域中停留时,矩形被填充,与矩形的尺寸相同,位于矩形上方

因为它总是与矩形的实际位置保持相同的距离,所以我很快发现,Sys.UI.doElement getLocation方法在Google Chrome中返回不同的值

结果如下:

火狐:

var location = Sys.UI.DomElement.getLocation(canvasElement);

location.x = 545
location.y = 297
乔姆:

var location = Sys.UI.DomElement.getLocation(canvasElement);

location.x = 544
location.y = 94
水平方向有1个像素,垂直方向有200多个像素

现在我知道了当我在矩形上方的区域悬停时,我的矩形是如何填充的

但我当然想知道我应该做些什么来避免谷歌chrome的这种行为

你知道吗

非常感谢您的帮助

谢谢


更多信息:

MSDN:

Sys.UI.doElement getLocation方法

获取DOM元素相对于左上角的绝对位置 所有者框架或窗口的一角


使用JQuery找到另一个解决方案:

变量位置=$(canvasElement.offset()

然后使用location.left和location.top