mirror of
https://github.com/danbulant/design
synced 2026-06-19 06:11:28 +00:00
29 lines
No EOL
1.2 KiB
JavaScript
29 lines
No EOL
1.2 KiB
JavaScript
/**
|
|
* @param {HTMLElement} elem
|
|
* @param {{ click?: string, title?: string, referrer?: string }} [opts]
|
|
*/
|
|
export function goatCounter(elem, opts) {
|
|
if(!('goatcounter' in window)) return;
|
|
if (elem.dataset.goatcounterBound && elem.dataset.goatcounterBound !== 'false')
|
|
return
|
|
const counter = function() {
|
|
// @ts-ignore
|
|
window.goatcounter.count({
|
|
event: true,
|
|
// @ts-ignore
|
|
path: (opts.click || elem.dataset.goatcounterClick || elem.name || elem.id || ''),
|
|
title: (opts.title || elem.dataset.goatcounterTitle || elem.title || (elem.innerHTML || '').substring(0, 200) || ''),
|
|
referrer: (opts.referrer || elem.dataset.goatcounterReferrer || elem.dataset.goatcounterReferral || ''),
|
|
})
|
|
}
|
|
elem.addEventListener("click", counter, false);
|
|
elem.addEventListener("auxclick", counter, false);
|
|
elem.dataset.goatcounterBound = 'true'
|
|
return {
|
|
destroy() {
|
|
elem.removeEventListener("click", counter, false);
|
|
elem.removeEventListener("auxclick", counter, false);
|
|
elem.dataset.goatcounterBound = 'false'
|
|
}
|
|
}
|
|
} |