PageSourceSearch

https://fyeo.nl/wp-content/themes/bb-theme-child/assets/js/data-layer.js?ver=1791462479

js fyeo.nl collected 2026-10-10 00:03:23 UTC 6,542 bytes, 245 lines download raw bytes

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.