From b56880bccfa777e56634719b4173975c2c661ce5 Mon Sep 17 00:00:00 2001 From: Eric Rowell Date: Wed, 25 Sep 2013 10:37:44 -0700 Subject: [PATCH] issues #606 now using ua detection for layerX/Y usage --- src/Stage.js | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/src/Stage.js b/src/Stage.js index ba53344f..d24626ef 100644 --- a/src/Stage.js +++ b/src/Stage.js @@ -577,12 +577,30 @@ }, _setMousePosition: function(evt) { var contentPosition = this._getContentPosition(), - mouseX = evt.offsetX - || ((evt.clientX || evt.pageX || 0) - contentPosition.left) - || 0, - mouseY = evt.offsetY - || ((evt.clientY || evt.pageY || 0) - contentPosition.top) - || 0; + offsetX = evt.offsetX, + clientX = evt.clientX, + mouseX = 0, + mouseY = 0; + + // if offsetX is defined, assume that offsetY is defined as well + if (offsetX !== undefined) { + mouseX = offsetX; + mouseY = evt.offsetY; + } + // we unforunately have to use UA detection here because accessing + // the layerX or layerY properties in newer veresions of Chrome + // throw a JS warning. layerX and layerY are required for FF + // when the container is transformed via CSS. + else if (Kinetic.UA.browser === 'mozilla') { + mouseX = evt.layerX; + mouseY = evt.layerY; + } + // if clientX is defined, assume that clientY is defined as well + else if (clientX !== undefined && contentPosition) { + mouseX = clientX - contentPosition.left; + mouseY = evt.clientY - contentPosition.top; + } + this.mousePos = { x: mouseX,