Skip to content

Latest commit

 

History

History
100 lines (75 loc) · 3 KB

README.md

File metadata and controls

100 lines (75 loc) · 3 KB

Exit Intent (Desktop + Mobile)

version MIT License Standard Standard Version Size Size gzip

Exit intent detection library. INCLUDING support for mobile and desktop.

DESKTOP-behaviour:

=> trigger intent if mouse leaves body ('mouseleave'-event) => trigger after user has been inactive for showAfterInactiveSecondsDesktop seconds

MOBILE-behaviour:

=> trigger ONLY after user has been inactive for showAfterInactiveSecondsMobile seconds

Usage

import exitIntent from 'exit-intent-mobile'

// Initialise
const removeExitIntent = exitIntent({
  maxDisplays: 99999,                    // default 99999
  eventThrottle: 100,                    // default 200
  showAfterInactiveSecondsDesktop: 60,   // default 60
  showAfterInactiveSecondsMobile: 40,    // default 40
  showAgainAfterSeconds: 10,             // default 10
  onExitIntent: () => {
    console.log('exit-intent triggered')
  },
  debug: false,
})

// Destroy
removeExitIntent()

Options

maxDisplays (default 99999) maximum number of times to trigger.

eventThrottle (default 200) event throttle in milliseconds.

onExitIntent (default no-op function) function to call when an exit intent has been detected.

showAfterInactiveSecondsDesktop (default 60 seconds) If user does NOT move mouse or scroll for nr-of-seconds, onExitIntent-function will be called. To disable the timer, pass undefined.

showAfterInactiveSecondsMobile (default 40 seconds) If user does NOT move mouse or scroll for nr-of-seconds, onExitIntent-function will be called. To disable the timer, pass undefined.

showAgainAfterSeconds (default 10 seconds) If exit-intend was trigger, pause nr-of-seconds before showing it again. Good to NOT annoy the user.

Example: Use in React

class ExitIntendComponent extends React.Component {
  componentDidMount() {
    this.exitIntend = exitIntent({
      maxDisplays: 99999,
      eventThrottle: 100,
      showAfterInactiveSecondsDesktop: 60,
      showAfterInactiveSecondsMobile: 30,
      onExitIntent: () => {
        this.setState({ show: true })
      },
      debug: false,
    })
  }
  componentWillUnmount() {
    this.exitIntend()  // IMPORTANT: clear timeouts
  }
}

License

MIT

originally based on https://github.com/danhayden/exit-intent (and https://github.com/richriscunha/Exitent)