1window.addEventListener('DOMContentLoaded', function(){ 2 let adviesModule = document.querySelector('#gform_11'); 3 let nieuwFormulier = document.querySelector('#gform_18'); 4 let vooronderzoekFormulier = document.querySelector('#gform_21'); 5 6 if(adviesModule){ 7 handleInPageAdviesModule(adviesModule); 8 } 9 10 if(nieuwFormulier){ 11 handleInPageAdviesModule(nieuwFormulier); 12 13 handleInlineFormVirtualPageview( 14 nieuwFormulier, 15 '/voorkeurstijd' 16 ); 17 } 18 19 if(vooronderzoekFormulier){ 20 handleInlineFormVirtualPageview( 21 vooronderzoekFormulier, 22 '/vooronderzoek-planner' 23 ); 24 25 handleInlineFormStepVirtualPageviews( 26 21, 27 '/vooronderzoek-planner' 28 ); 29 } 30}); 31 32function handleInPageAdviesModule(form){ 33 let pageUrl = window.location.href; 34 let pagePath = window.location.pathname; 35 let referrer = document.referrer || ''; 36 37 let ageOptions = form.querySelectorAll('.gfield.age-input .gchoice label'); 38 39 ageOptions.forEach((option)=>{ 40 option.addEventListener('click', function(){ 41 dataLayerPush({ 42 'event': 'inpage_advies_start', 43 'pageUrl': pageUrl, 44 'pagePath': pagePath, 45 'pageTitle': pageData.pageTitle, 46 'previousUrl': referrer 47 }); 48 }); 49 }); 50 51 52 jQuery(document).on('gform_confirmation_loaded', function(event, formId){ 53 if(form.getAttribute('data-formid') == formId){ 54 dataLayerPush({ 55 'event': 'inpage_advies_submits', 56 'pageUrl': pageUrl, 57 'pagePath': pagePath, 58 'pageTitle': pageData.pageTitle, 59 'previousUrl': referrer 60 }); 61 } 62 }); 63} 64 65function handlePopupDataLayer(popup, virtualUrl){ 66 let originalVirtualUrl = virtualUrl; 67 68 let pageUrl = window.location.href; 69 let pagePath = window.location.pathname; 70 let referrer = document.referrer || ''; 71 72 dataLayerPush({ 73 'event': 'Virtual pageview', 74 'pageUrl': pageUrl, 75 'pagePath': pagePath, 76 'pageTitle': pageData.pageTitle, 77 'Virtual url': virtualUrl, 78 'previousUrl': referrer 79 }); 80 81 //Popup has multipage form 82 if(popup && popup.querySelector('form .gform_page')){ 83 let form = popup.querySelector('form'); 84 85 jQuery(document).on('gform_page_loaded', function(event, form_id, current_page){ 86 if(form.getAttribute('data-formid') == form_id){ 87 virtualUrl = originalVirtualUrl; 88 89 if(current_page > 1){ 90 virtualUrl = originalVirtualUrl + `/${current_page}/`; 91 } 92 93 dataLayerPush({ 94 'event': 'Virtual pageview', 95 'pageUrl': pageUrl, 96 'pagePath': pagePath, 97 'pageTitle': pageData.pageTitle, 98 'Virtual url': virtualUrl, 99 'previousUrl': referrer 100 }); 101 } 102 }); 103 } 104} 105 106function dataLayerPush(object){ 107 if(!object) return; 108 109 window.dataLayer = window.dataLayer || []; 110 window.dataLayer.push(object); 111 // console.log(window.dataLayer); 112} 113 114 115 116function handleInlineFormVirtualPageview(form, virtualUrl){ 117 if(!form) return; 118 119 let fired = false; 120 121 function isVisible(el){ 122 return el.offsetParent !== null; 123 } 124 125 // Check direct (voor het geval hij al zichtbaar is) 126 if(isVisible(form)){ 127 fire(); 128 return; 129 } 130 131 // Observeer veranderingen (A/B tool!) 132 const observer = new MutationObserver(() => { 133 if(isVisible(form)){ 134 fire(); 135 observer.disconnect(); 136 } 137 }); 138 139 observer.observe(form, { 140 attributes: true, 141 attributeFilter: ['style', 'class'] 142 }); 143 144 function fire(){ 145 if(fired) return; 146 fired = true; 147 148 dataLayerPush({ 149 event: 'Virtual pageview', 150 pageUrl: window.location.href, 151 pagePath: window.location.pathname, 152 pageTitle: pageData.pageTitle, 153 'Virtual url': virtualUrl, 154 previousUrl: document.referrer || '' 155 }); 156 } 157} 158 159function handleInlineFormStepVirtualPageviews(formId, originalVirtualUrl){ 160 if(!formId || !originalVirtualUrl) return; 161 162 let lastPage = null; 163 164 function trackPage(currentPage){ 165 currentPage = parseInt(currentPage, 10); 166 167 if(!currentPage || currentPage === lastPage) return; 168 169 lastPage = currentPage; 170 171 if(currentPage <= 1) return; 172 173 dataLayerPush({ 174 event: 'Virtual pageview', 175 pageUrl: window.location.href, 176 pagePath: window.location.pathname, 177 pageTitle: pageData.pageTitle, 178 'Virtual url': originalVirtualUrl + `/${currentPage}/`, 179 previousUrl: document.referrer || '' 180 }); 181 } 182 183 jQuery(document).on('gform_page_loaded', function(event, loadedFormId, currentPage){ 184 if(parseInt(loadedFormId, 10) === parseInt(formId, 10)){ 185 trackPage(currentPage); 186 } 187 }); 188 189 setInterval(function(){ 190 const input = document.getElementById(`gform_source_page_number_${formId}`); 191 192 if(input){ 193 trackPage(input.value); 194 } 195 }, 300); 196} 197 198 199 200 201(function(){ 202 203 // Zorg dat dataLayer bestaat 204 window.dataLayer = window.dataLayer || []; 205 206 let vpFired = false;
207 let lastPage = null; 208 209 function pushVirtualPageview() { 210 if (vpFired) return; 211 vpFired = true; 212 213 window.dataLayer.push({ 214 event: 'Virtual pageview', 215 pageUrl: window.location.href, 216 pagePath: window.location.pathname, 217 pageTitle: document.title, 218 'Virtual url': '/voorkeurstijd/stap-2', 219 previousUrl: document.referrer || '' 220 }); 221 222 console.log('[VP] Form 18 â stap 2'); 223 } 224 225 function checkForm18Step() { 226 const input = document.getElementById('gform_source_page_number_18'); 227 if (!input) return; 228 229 const currentPage = input.value; 230 231 // Alleen reageren op échte overgang 232 if (currentPage !== lastPage) { 233 lastPage = currentPage; 234 235 if (currentPage === '2') { 236 pushVirtualPageview(); 237 } 238 } 239 } 240 241 // Polling = bewust gekozen, meest stabiel bij iframe + AJAX + A/B 242 setInterval(checkForm18Step, 300); 243 244})(); 245
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.