Skip to content

jantimon/one-listener

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

one-listener

big project?
many contributors?

too many event listeners on window?

This library aims to gather all handlers in one listener. This way the number of listeners are reduced.
Performance intense listeners are wrapped in a requestAnimationFrame

available listeners

  • scroll
  • resize (includes orientationchange)
  • mousewheel
  • mousemove
  • mouseup (not wrapped)

installation

npm install one-listener

Usage

Look at the examples folder for this example

import { requestEventListener, cancelEventListener } from '../src';


// request mousemove 
const stopMoveTracking = requestEventListener('mousemove', (e) => {
    console.log({
        x: e.pageX,
        y: e.pageY
    });
});

// request scroll
// and cancel mousemove on condition 
const trackScroll = (e) => {
    console.log(window.scrollY);
    if (window.scrollY > 100) {
        stopMoveTracking();
    }
};

requestEventListener('scroll', trackScroll);

// remove scroll tracking after 5 seconds
setTimeout(() => {
    cancelEventListener('scroll', trackScroll);
    console.log('scrolling canceled');
}, 5000);

About

less listeners on the window

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%