![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/vreg/node_modules/.cache/nuxt/ |
import { log } from './gtm.utils' const _layer = 'dataLayer' const _id = 'GTM-K58DFDD' function gtmClient(ctx, initialized) { return { init(id = _id) { if (initialized[id] || !window._gtm_inject) { return } window._gtm_inject(id) initialized[id] = true log('init', id) }, push(obj) { if (!window[_layer]) { window[_layer] = [] } window[_layer].push(obj) log('push', obj) } } } function gtmServer(ctx, initialized) { const events = [] const inits = [] ctx.beforeNuxtRender(() => { if (!inits.length && !events.length) { return } const gtmScript = ctx.app.head.script.find(s => s.hid == 'gtm-script') gtmScript.innerHTML = `window['${_layer}']=${JSON.stringify(events)};${gtmScript.innerHTML}` if (inits.length) { gtmScript.innerHTML += `;${JSON.stringify(inits)}.forEach(function(i){window._gtm_inject(i)})` } const gtmIframe = ctx.app.head.noscript.find(s => s.hid == 'gtm-noscript') const renderIframe = id => `<iframe src="https://www.googletagmanager.com/ns.html?id=${id}&" height="0" width="0" style="display:none;visibility:hidden" title="gtm"></iframe>` if (inits.length) { gtmIframe.innerHTML += inits.map(renderIframe) } }) return { init(id = _id) { if (initialized[id]) { return } inits.push(id) initialized[id] = true log('init', id) }, push(obj) { events.push(obj) log('push', JSON.stringify(obj)) } } } function startPageTracking(ctx) { ctx.app.router.afterEach((to) => { setTimeout(() => { ctx.$gtm.push(to.gtm || { routeName: to.name, pageType: 'PageView', pageUrl: '' + to.fullPath, pageTitle: (typeof document !== 'undefined' && document.title) || '', event: 'nuxtRoute' }) }, 250) }) } export default function (ctx, inject) { const runtimeConfig = (ctx.$config && ctx.$config.gtm) || {} const autoInit = true const id = 'GTM-K58DFDD' const runtimeId = runtimeConfig.id const initialized = autoInit && id ? {[id]: true} : {} const $gtm = process.client ? gtmClient(ctx, initialized) : gtmServer(ctx, initialized) if (autoInit && runtimeId && runtimeId !== id) { $gtm.init(runtimeId) } ctx.$gtm = $gtm inject('gtm', ctx.$gtm) if (process.client) { startPageTracking(ctx); } }