@mapbox/link-hijacker
Version:
Hijack clicks on and within links, probably for client-side routing
49 lines (43 loc) • 1.24 kB
JavaScript
;
var linkHijacker = require('../..');
document
.getElementById('default-prevented')
.addEventListener('click', function(e) {
e.preventDefault();
});
function logHijacking(link) {
var countContainer = document.getElementById(link.id + '-count');
var currentCount = Number(countContainer.innerText);
var nextCount = currentCount + 1;
countContainer.innerText = nextCount;
}
var stop = linkHijacker.hijack(logHijacking);
var usingDefaults = true;
var switchButton = document.getElementById('switch-options');
switchButton.addEventListener('click', function() {
if (usingDefaults === true) {
stop();
stop = linkHijacker.hijack(
{
skipModifierKeys: false,
skipDownload: false,
skipTargetBlank: false,
skipExternal: false,
skipMailTo: false,
skipOtherOrigin: false,
skipFragment: false,
skipFilter: function(link) {
return link.hasAttribute('data-no-hijack');
}
},
logHijacking
);
usingDefaults = false;
switchButton.innerText = 'use defaults';
} else {
stop();
stop = linkHijacker.hijack(logHijacking);
usingDefaults = true;
switchButton.innerText = 'set options';
}
});