From 8cc8ad9e5eef60aad041d3748cbfbc734de99a42 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Tue, 24 Jan 2012 22:56:53 -0800 Subject: [PATCH] Handle events via addEventListener(). This solves an issue with touch events firing twice (they were firing once for bubble and once for capture). With addEventListener(), they fire once. --- .../src/main/resources/oskeyboard.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/guacamole-common-js/src/main/resources/oskeyboard.js b/guacamole-common-js/src/main/resources/oskeyboard.js index 8fc3b3692..d940a9f4b 100644 --- a/guacamole-common-js/src/main/resources/oskeyboard.js +++ b/guacamole-common-js/src/main/resources/oskeyboard.js @@ -266,8 +266,7 @@ Guacamole.OnScreenKeyboard = function(url) { row.appendChild(key_container_element); // Set up click handler for key - key_element.onmousedown = - key_element.ontouchstart = function() { + function press(e) { // Press key if not yet pressed if (!key.pressed) { @@ -306,11 +305,14 @@ Guacamole.OnScreenKeyboard = function(url) { } + e.preventDefault(); + }; - key_element.onmouseup = - key_element.onmouseout = - key_element.ontouchend = function() { + key_element.addEventListener("mousedown", press, true); + key_element.addEventListener("touchstart", press, true); + + function release(e) { // Release key if currently pressed if (key.pressed) { @@ -329,8 +331,14 @@ Guacamole.OnScreenKeyboard = function(url) { } + e.preventDefault(); + }; + key_element.addEventListener("mouseup", release, true); + key_element.addEventListener("mouseout", release, true); + key_element.addEventListener("touchend", release, true); + } });