node package manager
Painless code sharing. npm Orgs help your team discover, share, and reuse code. Create a free org »



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.