Index: grid_scroller.js =================================================================== --- grid_scroller.js (revision 13861) +++ grid_scroller.js (working copy) @@ -297,34 +297,27 @@ } else { $status = window.addEventListener('resize', function(ev) { the_grid.AutoResize() }, true); } - if (document.all) { - this.DataScroller.onmousewheel = function(ev) { + + // set mouse scroll events + this.setMouseScroll( + this.DataScroller, + function(ev) { var e = document.all ? window.event : ev; - this.TheGrid.MainInner.scrollTop += -e.wheelDelta/2 - this.TheGrid.SyncScroll(); + the_grid.MainInner.scrollTop += (e.detail ? e.detail * 10 : -e.wheelDelta / 2); + the_grid.SyncScroll(); } - if (this.LeftCells > 0) { - this.LeftDataInner.onmousewheel = function(ev) { + ); + + if (this.LeftCells > 0) { + this.setMouseScroll( + this.LeftDataInner, + function(ev) { var e = document.all ? window.event : ev; - this.TheGrid.MainInner.scrollTop += -e.wheelDelta/2 - this.TheGrid.SyncScroll(); + the_grid.MainInner.scrollTop += (e.detail ? e.detail * 10 : -e.wheelDelta / 2); + the_grid.SyncScroll(); } - } + ); } - else { - this.DataScroller.addEventListener("DOMMouseScroll", function(ev) { - var e = document.all ? window.event : ev; - this.TheGrid.MainInner.scrollTop += e.detail*10 - this.TheGrid.SyncScroll(); - }, false); - if (this.LeftCells > 0) { - this.LeftDataInner.addEventListener("DOMMouseScroll", function(ev) { - var e = document.all ? window.event : ev; - this.TheGrid.MainInner.scrollTop += e.detail*10 - this.TheGrid.SyncScroll(); - }, false); - } - } addLoadEvent( function() { @@ -335,6 +328,16 @@ ); } +GridScroller.prototype.setMouseScroll = function ($element, $callback) { + if ($element.addEventListener) { + $element.addEventListener('DOMMouseScroll', $callback, false); + $element.addEventListener('mousewheel', $callback, false); // needed? + } + else if ($element.attachEvent) { + $element.attachEvent('onmousewheel', $callback); + } +} + GridScroller.prototype.SetReferences = function() { this.MainOuter = document.getElementById('outer_main_'+this.GridId ); this.MainInner = document.getElementById('inner_main_'+this.GridId)