diff --git a/src/jquery.mousewheel.js b/src/jquery.mousewheel.js index 5a7e1bd43..5bf9a514a 100644 --- a/src/jquery.mousewheel.js +++ b/src/jquery.mousewheel.js @@ -36,7 +36,21 @@ version: "@VERSION", setup: function() { - this.addEventListener( "wheel", handler, false ); + // Use passive event listeners if supported + var passiveSupported = false; + try { + var opts = Object.defineProperty({}, "passive", { + get: function() { + passiveSupported = true; + } + }); + window.addEventListener("test", null, opts); + } catch (e) {} + this.addEventListener( + "wheel", + handler, + passiveSupported ? { passive: true } : false + ); // Store the line height and page height for this particular element $.data( this, "mousewheel-line-height", special.getLineHeight( this ) ); @@ -44,7 +58,21 @@ }, teardown: function() { - this.removeEventListener( "wheel", handler, false ); + // Use passive event listeners if supported + var passiveSupported = false; + try { + var opts = Object.defineProperty({}, "passive", { + get: function() { + passiveSupported = true; + } + }); + window.addEventListener("test", null, opts); + } catch (e) {} + this.removeEventListener( + "wheel", + handler, + passiveSupported ? { passive: true } : false + ); // Clean up the data we added to the element $.removeData( this, "mousewheel-line-height" );