From 6036c99e73b47e0a5c8a4613b744c84b94831a00 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Wed, 29 Feb 2012 13:34:11 -0800 Subject: [PATCH] Only use classList.add() and classList.remove() if classList is supported. --- src/main/resources/oskeyboard.js | 61 ++++++++++++++++++++++++++++++++++---- 1 file changed, 55 insertions(+), 6 deletions(-) diff --git a/src/main/resources/oskeyboard.js b/src/main/resources/oskeyboard.js index d940a9f..6cbef3e 100644 --- a/src/main/resources/oskeyboard.js +++ b/src/main/resources/oskeyboard.js @@ -55,6 +55,55 @@ Guacamole.OnScreenKeyboard = function(url) { var modifiers = {}; var currentModifier = 1; + // Function for adding a class to an element + var addClass; + + // Function for removing a class from an element + var removeClass; + + // If Node.classList is supported, implement addClass/removeClass using that + if (Node.classList) { + + addClass = function(element, classname) { + element.classList.add(classname); + }; + + removeClass = function(element, classname) { + element.classList.remove(classname); + }; + + } + + // Otherwise, implement own + else { + + addClass = function(element, classname) { + + // Simply add new class + element.className += " " + classname; + + }; + + removeClass = function(element, classname) { + + // Filter out classes with given name + element.className = element.className.replace(/([^ ]+)[ ]*/g, + function(match, testClassname, spaces, offset, string) { + + // If same class, remove + if (testClassname == classname) + return ""; + + // Otherwise, allow + return match; + + } + ); + + }; + + } + // Returns a unique power-of-two value for the modifier with the // given name. The same value will be returned for the same modifier. function getModifier(name) { @@ -249,8 +298,8 @@ Guacamole.OnScreenKeyboard = function(url) { var requirements = required.value.split(","); for (var i=0; i