30 lines
937 B
JavaScript
30 lines
937 B
JavaScript
export class GTM {
|
|
gtagID = "{{.GtagID}}";
|
|
|
|
constructor() {
|
|
this.insertScript(window, document, 'script', 'dataLayer', this.gtagID);
|
|
this.insertNoScript();
|
|
}
|
|
|
|
|
|
insertScript(w, d, s, l, i) {
|
|
w[l] = w[l] || []; w[l].push({
|
|
'gtm.start':
|
|
new Date().getTime(), event: 'gtm.js'
|
|
}); var f = d.getElementsByTagName(s)[0],
|
|
j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src =
|
|
'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f);
|
|
}
|
|
|
|
insertNoScript() {
|
|
const noscript = document.createElement("noscript");
|
|
const iframe = document.createElement("iframe");
|
|
iframe.src = "https://www.googletagmanager.com/ns.html?id=" + this.gtagID;
|
|
iframe.height = 0;
|
|
iframe.width = 0;
|
|
iframe.style = "display:none;visibility:hidden";
|
|
noscript.appendChild(iframe);
|
|
document.body.appendChild(noscript);
|
|
}
|
|
}
|