Skip to content

Faster and simplified version of on-load without dom diffing support

License

Notifications You must be signed in to change notification settings

hyperdivision/fast-on-load

Folders and files

NameName
Last commit message
Last commit date

Latest commit

3e1d680 · Aug 30, 2019

History

21 Commits
May 15, 2019
Jun 9, 2019
May 15, 2019
Aug 30, 2019
May 15, 2019
Aug 30, 2019
Aug 30, 2019
Aug 30, 2019

Repository files navigation

fast-on-load

Build Status

Faster and simplified version of on-load without dom diffing support.

Usage

const onload = require('fast-on-load')

onload(domElement, function () {
  console.log('element was mounted')
}, function () {
  console.log('element was unmounted')
})

Uses a MutationObserver and a generated class together with getElementsByClassName() to find DOM nodes that on-load is tracking, which performs much faster (around 1000x in our machines) on bigger DOM trees that the tree traversal algo on-load uses.

API

const node = onload(node, [onload], [onunload])

Watch node, optionally passing onload and onunload handler. Returns the node itself.

onload.delete(node, [onload], [onunload])

Pass in references to the onload and onunload functions and the node they are attached to to remove them from the function set that get run on load and unload. Pass undefined for onload if you only attached and onunload function.

onload = onload.bind(dom.window)

To run in non-dom context, such as jsdom, call onload with desired window context.

Install

npm install fast-on-load

License

MIT