From 9ea8e0352dc1b5b0348af44e68cf67fc9d5b5679 Mon Sep 17 00:00:00 2001 From: rolux Date: Wed, 4 Dec 2013 23:43:07 +0100 Subject: [PATCH] Ox.$: normalize mousewheel event names --- source/Ox/js/DOM.js | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/source/Ox/js/DOM.js b/source/Ox/js/DOM.js index ca64440c..ee09d28d 100644 --- a/source/Ox/js/DOM.js +++ b/source/Ox/js/DOM.js @@ -28,11 +28,30 @@ Ox.$ Generic HTML element, mimics jQuery true @*/ Ox.$ = Ox.element = function(value) { + var element = !Ox.isString(value) ? value // window, document or element - : value[0] == '<' ? document.createElement(value.slice(1, -1)) - : value[0] == '#' ? document.getElementById(value.slice(1)) - : value[0] == '.' ? document.getElementsByClassName(value.slice(1))[0] - : document.getElementsByTagName(value)[0]; + : value[0] == '<' ? document.createElement(value.slice(1, -1)) + : value[0] == '#' ? document.getElementById(value.slice(1)) + : value[0] == '.' ? document.getElementsByClassName(value.slice(1))[0] + : document.getElementsByTagName(value)[0], + mousewheelEvents = ['wheel', 'mousewheel'], + originalMousewheelEvents = 'onwheel' in document ? ['wheel'] + : ['mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll']; + + function normalizeEvents(args) { + var ret = {}; + Ox.forEach(Ox.makeObject(args), function(callback, event) { + if (Ox.contains(mousewheelEvents, event)) { + originalMousewheelEvents.forEach(function(event) { + ret[event] = callback; + }); + } else { + ret[event] = callback; + } + }); + return ret; + } + return element ? { //@ 0 The DOM element itself 0: element, @@ -225,7 +244,7 @@ Ox.$ = Ox.element = function(value) { @*/ off: function(event, callback) { var that = this; - Ox.forEach(Ox.makeObject(arguments), function(callback, event) { + Ox.forEach(normalizeEvents(arguments), function(callback, event) { if (callback) { that[0].removeEventListener(event, callback, false); } else { @@ -244,7 +263,7 @@ Ox.$ = Ox.element = function(value) { @*/ on: function() { var that = this; - Ox.forEach(Ox.makeObject(arguments), function(callback, event) { + Ox.forEach(normalizeEvents(arguments), function(callback, event) { that[0].addEventListener(event, callback, false); }); return this; @@ -260,7 +279,7 @@ Ox.$ = Ox.element = function(value) { one: function(events) { var args = Ox.slice(arguments), that = this; - Ox.forEach(Ox.makeObject(arguments), function(callback, event) { + Ox.forEach(normalizeEvents(arguments), function(callback, event) { that.on(event, function fn() { that.off(event, fn); return callback.apply(that, args); @@ -422,6 +441,7 @@ Ox.$ = Ox.element = function(value) { return this[0].offsetWidth; } } : null; + }; /*@