From 6b9f40ef603262ad181bdbbc64b3768906d5bafd Mon Sep 17 00:00:00 2001 From: Colin Clark Date: Sun, 15 Apr 2012 13:31:11 -0400 Subject: [PATCH] Adds support for Firefox by computing Event.offsetX/Y when they are not supported natively. --- js/finger.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/js/finger.js b/js/finger.js index efc7193..eb8bd57 100644 --- a/js/finger.js +++ b/js/finger.js @@ -42,12 +42,14 @@ FingerJS.prototype.fingerPadInit = function() { $el.append(posShower); $el.on('mousedown', function(ev) { + FingerJS.normalizeEventOffset(ev); fjsObj.fingerPadStartSound($el, ev.offsetX, ev.offsetY); }); $el.on('mouseup', function(ev) { fjsObj.fingerPadStopSound($el); }); $el.on('mousemove', function(ev) { + FingerJS.normalizeEventOffset(ev); fjsObj.fingerPadMoveCursor($el, ev.offsetX, ev.offsetY); }); }); @@ -110,3 +112,16 @@ FingerJS.prototype.fingerPadMoveCursor = function($el, x, y) { $el.data('synth').input(fjsObj.fingerPadGetSynthModId('carrier',$el) + ".freq", playFreqPlay); $el.data('synth').input(fjsObj.fingerPadGetSynthModId('mod', $el) + ".freq", modFreqPlay); } + +/** + * Normalizes the event offsetX/offsetY properties across browsers, particularly for Firefox, which doesn't natively support them. + */ +FingerJS.normalizeEventOffset = function(ev) { + if (ev.offsetX === undefined) { + var offset = $(ev.target).offset(); + ev.offsetX = ev.clientX - offset.left; + ev.offsetY = ev.clientY - offset.top; + } + return ev; +}; +