1/** 2 * @copyright Copyright (c) 2026 SAS WEB COOKING. All rights reserved. 3 * @author Vincent Enjalbert <[email protected]> 4 * See LICENSE-EN.txt for license details. 5 * 6 * Google Tag Manager bootstrap, without inline script: starts the dataLayer and loads the 7 * container from the configured loader. Plain synchronous script, loaded after consent.js. 8 */ 9(function (global) { 10 'use strict'; 11 12 var element = global.document.getElementById('webcooking-gtm-config'); 13 if (!element) { 14 return; 15 } 16 var config; 17 try { 18 config = JSON.parse(element.textContent); 19 } catch (e) { 20 return; 21 } 22 23 var dataLayer = global.dataLayer = global.dataLayer || []; 24 25 if (config.serverContainerUrl) { 26 dataLayer.push({ gtm_server_container_url: config.serverContainerUrl }); 27 } 28 if (!config.containerId) { 29 return; 30 } 31 32 // Same sequence as Google's snippet: the gtm.js event fires the Initialization and All Pages triggers. 33 dataLayer.push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' }); 34 var script = global.document.createElement('script'); 35 script.async = true; 36 script.src = config.loaderUrl + '/gtm.js?id=' + encodeURIComponent(config.containerId); 37 global.document.head.appendChild(script); 38})(window);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.