use passive for touch events if possible, fixes #3059

This commit is contained in:
j 2017-11-06 07:42:51 +02:00
parent b11d6a81fe
commit 0a9c30d1dc
2 changed files with 29 additions and 5 deletions

View file

@ -20,11 +20,21 @@ if ($.event.fixHooks) {
}
}
var supportsPassive = false;
try {
var opts = Object.defineProperty({}, 'passive', {
get: function() {
supportsPassive = true;
}
});
window.addEventListener("test", null, opts);
} catch (e) {}
$.event.special.mousewheel = {
setup: function() {
if ( this.addEventListener ) {
for ( var i=types.length; i; ) {
this.addEventListener( types[--i], handler, false );
this.addEventListener( types[--i], handler, supportsPassive ? { passive: true } : false );
}
} else {
this.onmousewheel = handler;
@ -34,7 +44,7 @@ $.event.special.mousewheel = {
teardown: function() {
if ( this.removeEventListener ) {
for ( var i=types.length; i; ) {
this.removeEventListener( types[--i], handler, false );
this.removeEventListener( types[--i], handler, supportsPassive ? { passive: true } : false );
}
} else {
this.onmousewheel = null;

View file

@ -2,6 +2,15 @@
(function(_) {
var noTooltipEvents = {};
var supportsPassive = false;
try {
var opts = Object.defineProperty({}, 'passive', {
get: function() {
supportsPassive = true;
}
});
window.addEventListener("test", null, opts);
} catch (e) {}
/*@
Ox.Element <f> Basic UI element object
@ -128,10 +137,15 @@
.on({
mousedown: onMousedown,
mousewheel: onMousewheel,
touchend: onTouchend,
touchmove: onTouchmove,
touchstart: onTouchstart
//touchend: onTouchend,
//touchmove: onTouchmove,
//touchstart: onTouchstart
});
that.$element[0].addEventListener('touchend', onTouchend, supportsPassive ? { passive: true } : false );
that.$element[0].addEventListener('touchmove', onTouchmove, supportsPassive ? { passive: true } : false );
that.$element[0].addEventListener('touchstart', onTouchstart, supportsPassive ? { passive: true } : false );
that[0] = that.$element[0];
that.length = 1;
that.self = function _self() {