vimo-dt
Version:
A Vue2.x UI Project For Mobile & HyBrid
40 lines (32 loc) • 1.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = registerListener;
function isPassive() {
var supportsPassiveOption = false;
try {
window.addEventListener('test', null, Object.defineProperty({}, 'passive', {
get: function get() {
supportsPassiveOption = true;
}
}));
} catch (e) {}
return supportsPassiveOption;
}
function registerListener(ele, eventName, callback) {
var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
var unregisterListenersCollection = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
var listenerOpts = isPassive() ? {
capture: !!opts.capture,
passive: !!opts.passive
} : !!opts.capture;
ele['addEventListener'](eventName, callback, listenerOpts);
var unReg = function unregisterListener() {
ele['removeEventListener'](eventName, callback, listenerOpts);
};
if (unregisterListenersCollection && Array.isArray(unregisterListenersCollection)) {
unregisterListenersCollection.push(unReg);
}
return unReg;
}