57 lines
1.6 KiB
JavaScript
57 lines
1.6 KiB
JavaScript
/**
|
|
* Microsoft Clarity Consent Mode V2 integration with Complianz
|
|
*/
|
|
function callClarity(method, params) {
|
|
if (typeof window.clarity === 'function') {
|
|
try {
|
|
window.clarity(method, params);
|
|
} catch (e) {
|
|
console.warn('Clarity API error:', e);
|
|
}
|
|
}
|
|
}
|
|
|
|
(function (c, l, a, r, i, t, y) {
|
|
c[a] = c[a] || function () { (c[a].q = c[a].q || []).push(arguments); };
|
|
t = l.createElement(r);
|
|
t.async = 1;
|
|
t.src = "https://www.clarity.ms/tag/" + i;
|
|
y = l.getElementsByTagName(r)[0];
|
|
y.parentNode.insertBefore(t, y);
|
|
})(window, document, "clarity", "script", "{site_ID}");
|
|
|
|
function getConsentFromEvent(e) {
|
|
var d = e && e.detail && e.detail.categories ? e.detail.categories : [];
|
|
var categories = Array.isArray(d) ? d : [];
|
|
|
|
return {
|
|
analyticsAllowed: categories.indexOf('statistics') !== -1,
|
|
adsAllowed: categories.indexOf('marketing') !== -1
|
|
};
|
|
}
|
|
|
|
function sendClarityConsent(analyticsAllowed, adsAllowed) {
|
|
var status = function (b) { return b ? "granted" : "denied"; };
|
|
callClarity('consentv2', {
|
|
analytics_Storage: status(!!analyticsAllowed),
|
|
ad_Storage: status(!!adsAllowed)
|
|
});
|
|
}
|
|
|
|
function eraseClarityCookies() {
|
|
callClarity('consent', false);
|
|
}
|
|
|
|
document.addEventListener('cmplz_fire_categories', function (e) {
|
|
var consent = getConsentFromEvent(e);
|
|
sendClarityConsent(consent.analyticsAllowed, consent.adsAllowed);
|
|
});
|
|
|
|
document.addEventListener('cmplz_revoke', function (e) {
|
|
var consent = getConsentFromEvent(e);
|
|
sendClarityConsent(consent.analyticsAllowed, consent.adsAllowed);
|
|
if (!consent.analyticsAllowed && !consent.adsAllowed) {
|
|
eraseClarityCookies();
|
|
}
|
|
});
|