我在Chrome瀏覽器中使用我的畫布元素時遇到了一些麻煩。Sys.UI.DomElment.getLocation在Google Chrome瀏覽器中返回的值不同於其他瀏覽器中的
我有一個畫布上有多個矩形。我跟蹤名爲targets的數組中的矩形。每當鼠標移過畫布時,我都會調用懸停功能來檢查鼠標是否位於其中一個矩形的頂部。
如果它位於矩形的頂部,矩形應填充純色。
看看這個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正常工作。
但在谷歌瀏覽器中,當我將鼠標懸停在矩形上方與矩形相同的區域中時,矩形被填充。
因爲它總是與矩形的實際位置相同,我很快發現Sys.UI.DomElement 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個像素。
現在我知道它是如何來的,當我將鼠標懸停在矩形上方的區域時,我的矩形被填充。
但當然,我想知道我應該怎麼做才能避免谷歌瀏覽器的這種行爲。
你有什麼想法嗎?
任何幫助,非常感謝。
謝謝!
更多信息:
MSDN:link
Sys.UI.DomElement的getLocation方法
獲取DOM元素相對於向左上方 角落的絕對位置所有者框架或窗口。