From 85269916af704771a2325a5a0155fc26af7c8067 Mon Sep 17 00:00:00 2001 From: Tarmo Aidantausta Date: Mon, 15 Oct 2012 15:00:06 +0300 Subject: [PATCH] Add noConflict --- keymaster.js | 13 ++++++++++++- test/keymaster.html | 11 +++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/keymaster.js b/keymaster.js index 7eded17..6e3712c 100644 --- a/keymaster.js +++ b/keymaster.js @@ -156,7 +156,7 @@ } } }; - + // cross-browser events function addEvent(object, event, method) { if (object.addEventListener) @@ -172,12 +172,23 @@ // reset modifiers to false whenever the window is (re)focused. addEvent(window, 'focus', resetModifiers); + // store previously defined key + var previousKey = global.key; + + // restore previously defined key and return reference to our key object + function noConflict() { + var k = global.key; + global.key = previousKey; + return k; + } + // set window.key and window.key.set/get/deleteScope, and the default filter global.key = assignKey; global.key.setScope = setScope; global.key.getScope = getScope; global.key.deleteScope = deleteScope; global.key.filter = filter; + global.key.noConflict = noConflict; if(typeof module !== 'undefined') module.exports = key; diff --git a/test/keymaster.html b/test/keymaster.html index eaeff34..84b21a8 100644 --- a/test/keymaster.html +++ b/test/keymaster.html @@ -229,6 +229,17 @@

Keymaster unit tests

t.assertEqual(1, filterCalls); t.assertEqual(1, keyCalls); + }, + testNoConflict: function(t) { + var k = key.noConflict(); + t.assertEqual(undefined, window.key); + var called = false; + k('a', function() { + called = true; + }); + keydown(65); keyup(65); + t.assertEqual(called, true); + window.key = k; } });