[Improvement] optimize passive events (#478)

This commit is contained in:
neverland
2017-12-25 15:58:44 +08:00
committed by GitHub
parent 2d2a368e2c
commit 30f22b28ed
5 changed files with 51 additions and 14 deletions

28
packages/utils/event.js Normal file
View File

@@ -0,0 +1,28 @@
import { isServer } from './';
export let supportsPassive = false;
if (!isServer) {
try {
const opts = {};
Object.defineProperty(opts, 'passive', {
get() {
/* istanbul ignore next */
supportsPassive = true;
}
});
window.addEventListener('test-passive', null, opts);
} catch (e) {}
}
export function on(target, event, handler, passive = false) {
!isServer &&
target.addEventListener(
event,
handler,
supportsPassive ? { capture: false, passive } : false
);
}
export function off(target, event, handler) {
!isServer && target.removeEventListener(event, handler);
}