1// Init and send ddl 2function initializeAndSendDatalayer(digitalData) { 3 // Push ddl to window 4 window.digitalData = digitalData; 5 6 // Set browser data 7 setDatalayerBrowserData(); 8 9 // Dispatch ddl 10 dispatchDatalayer(); 11 12 // Debug log 13 if (debug) console.log('Datalayer initialized and dispatched:', window.digitalData); 14} 15 16// Send ddl 17function dispatchDatalayer() { 18 if (window.digitalData) { 19 var timeoutInMillis = 200; 20 if (window.ALMA && window.ALMA.sammioDatalayerSenderReady) { 21 if (debug) console.log('Dispatching ddl'); 22 document.dispatchEvent( 23 new window.CustomEvent('sammio-datalayer-send', { 24 detail: { 25 site: 'toi', 26 subsite: 'www', 27 dataLayer: window.digitalData, 28 }, 29 }) 30 ); 31 } else { 32 window.setTimeout(dispatchDatalayer, timeoutInMillis); 33 } 34 } 35} 36 37// Set ddl page and browser data 38function setDatalayerBrowserData() { 39 // Set viewport and system environment 40 var width = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); 41 var viewport = 'desktop-wide'; 42 var sysEnv = 'desktop'; 43 if (width < 768) { 44 viewport = sysEnv = 'mobile'; 45 } 46 else if (width < 1024) { 47 viewport = 'tablet'; 48 } 49 else if (width < 1200) { 50 viewport = 'desktop '; 51 } 52 53 // Set ddl page info 54 window.digitalData.page.pageInfo.pageTitle = document.title; 55 window.digitalData.page.pageInfo.locationProtocol = document.location.protocol.slice(0, -1); 56 window.digitalData.page.pageInfo.locationHost = document.location.host; 57 window.digitalData.page.pageInfo.locationPathName = document.location.pathname; 58 window.digitalData.page.pageInfo.locationHref = document.location.href; 59 window.digitalData.page.pageInfo.sysEnv = sysEnv; 60 61 // Set ddl page attributes 62 window.digitalData.page.attributes.width = width; 63 window.digitalData.page.attributes.viewport = viewport; 64 window.digitalData.page.attributes.userAgentHeader = navigator.userAgent; 65}
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.