node package manager



Determine if an anchor click was intended for staying on the current site.

build status dev dependency status

browser support


The function this module exposes should be used in a click handler:

var stayOrGo = require('stay-or-go');
window.addEventListener('click', function (evt) {
  var a = stayOrGo(evt);
  if (!a) return;
  history.pushState(a.pathname, '', a.pathname);
}, false);

If one or more of the following is true the return value will be undefined:

  • The default action of the event was already prevented (event.preventDefault()).
  • The user did not click the normal mouse button (when using a mouse).
  • The user held one of the Ctrl, Shift, or Meta keys when clicking.
  • The user did not click an anchor or a child elemnt of an anchor.
  • The anchor clicked has a target attribute.
  • The href of the anchor is pointing to an external site.

Otherwise the return value is the anchor element clicked.