Javascript Sys.UI.DomElment.getLocation在Google Chrome中返回的值与在其他浏览器中返回的值不同
我在google chrome中的canvas元素遇到了一些问题 我有一张画布,上面有多个矩形。我跟踪名为targets的数组中的矩形。每次鼠标在画布上移动时,我都会调用hover函数来检查鼠标是否位于其中一个矩形的顶部 如果它位于矩形的顶部,则应使用纯色填充该矩形 请看下面的javascript行: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
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