medewerkers

Vitaliteitsmaand

Vitaliteitsmaand

In november was het de hele maand vitaliteitsmaand bij Vigere. Collega’s konden zich opgeven om mee te doen aan allerlei activiteiten en workshops rondom het thema vitaliteit. Zo stonden er […]

Lees meerVitaliteitsmaand
(function () { 'use strict';console.log('Vigere Form Submit Tracking is geladen');/* * Configuratie per pagina. */ const formPages = { '/gezinshuiszorg/': { provider: 'jotform', form_id: '261861994296373', form_name: 'gezinshuisouder_interesse', form_location: 'gezinshuiszorg' },'/gezinshuiszorg/gezinshuisouder-worden/': { provider: 'jotform', form_id: '261861994296373', form_name: 'gezinshuisouder_interesse', form_location: 'route_gezinshuisouder' },'/agenda/4754/': { provider: 'jotform', form_id: '261746366832061', form_name: 'informatiebijeenkomst_aanmelding', form_location: 'goes' },'/agenda/informatiebijeenkomst-gezinshuis-starten-in-oudenbosch/': { provider: 'jotform', form_id: '261746366832061', form_name: 'informatiebijeenkomst_aanmelding', form_location: 'oudenbosch' },'/pleegzorg/aanvragen-informatiepakket/': { provider: 'jotform', form_id: '240945264662360', form_name: 'informatiepakket_aanvraag', form_location: 'pleegzorg' },'/vacatures/gezinshuisouder-bij-vigere/': { provider: 'elementor', form_id: 'solliciteer_vigere', form_name: 'vacature_gezinshuisouder', form_location: 'vacaturepagina' } };/* * Bewaart verstuurde events kort om dubbele metingen * door meerdere succesberichten te voorkomen. */ const recentlySentEvents = {};/** * Normaliseert het paginapad. */ function getPagePath() { let path = window.location.pathname;if (!path.endsWith('/')) { path += '/'; }return path; }/** * Geeft de configuratie voor de huidige pagina. */ function getCurrentFormConfig() { return formPages[getPagePath()] || null; }/** * Voorkomt dat hetzelfde event binnen vijf seconden * meerdere keren wordt verstuurd. */ function isDuplicate(eventKey) { const now = Date.now(); const previousTime = recentlySentEvents[eventKey] || 0;if (now - previousTime < 5000) { return true; }recentlySentEvents[eventKey] = now;return false; }/** * Stuurt het definitieve event naar de GTM-dataLayer. */ function pushFormSubmit(config) { if (!config) { return; }const pagePath = getPagePath();const eventKey = [ config.provider, config.form_id, pagePath ].join(':');if (isDuplicate(eventKey)) { console.log( 'Dubbel form_submit-event tegengehouden:', eventKey );return; }const eventData = { event: 'form_submit', form_id: config.form_id, form_name: config.form_name, form_location: config.form_location, page_path: pagePath };window.dataLayer = window.dataLayer || []; window.dataLayer.push(eventData);console.log( 'form_submit naar dataLayer verstuurd:', eventData ); }/** * Controleert of een bericht van een geldig * Jotform-domein afkomstig is. */ function isJotformOrigin(origin) { let hostname;try { hostname = new URL(origin).hostname.toLowerCase(); } catch (error) { return false; }return ( hostname === 'jotform.com' || hostname.endsWith('.jotform.com') || hostname === 'jotformeu.com' || hostname.endsWith('.jotformeu.com') ); }/** * Controleert of het bericht werkelijk afkomstig is van * een Jotform-iframe op de huidige pagina. */ function isJotformIframeSource(sourceWindow) { const jotformIframes = Array.from( document.querySelectorAll( [ 'iframe[src*="jotform.com"]', 'iframe[src*="jotformeu.com"]', 'iframe[id^="JotFormIFrame"]' ].join(',') ) );return jotformIframes.some(function (iframe) { return iframe.contentWindow === sourceWindow; }); }/** * Zet verschillende mogelijke Jotform-berichtformaten * om naar een bruikbaar object. */ function parseJotformMessage(data) { if (data && typeof data === 'object') { return data; }if (typeof data !== 'string') { return null; }try { const parsedData = JSON.parse(data);if (parsedData && typeof parsedData === 'object') { return parsedData; } } catch (error) { /* * Het bericht is geen JSON. Hieronder controleren * we daarom de tekstuele eventnaam. */ }if (data.includes('submission-completed')) { return { action: 'submission-completed' }; }return null; }/** * JOTFORM TRACKING * * Jotform stuurt na een succesvolle verzending vanuit * het iframe een submission-completed-bericht. */ window.addEventListener('message', function (event) { const config = getCurrentFormConfig();/* * Luister alleen op pagina's die als Jotform-pagina * zijn geconfigureerd. */ if (!config || config.provider !== 'jotform') { return; }/* * Accepteer uitsluitend Jotform-domeinen. */ if (!isJotformOrigin(event.origin)) { return; }/* * Controleer daarnaast of het bericht afkomstig is * van het ingesloten Jotform op deze pagina. */ if (!isJotformIframeSource(event.source)) { return; }const message = parseJotformMessage(event.data);/* * Log alleen herkende Jotform-berichten. */ if (message) { console.log('Jotform-bericht ontvangen:', { origin: event.origin, data: event.data }); }if ( !message || message.action !== 'submission-completed' ) { return; }/* * Extra controle als Jotform een Form ID meestuurt. */ const receivedFormId = message.formID || message.formId || message.form_id || '';if ( receivedFormId && String(receivedFormId) !== config.form_id ) { console.warn( 'Jotform Form ID komt niet overeen:', { verwacht: config.form_id, ontvangen: String(receivedFormId) } );return; }pushFormSubmit(config); });/** * ELEMENTOR TRACKING * * Elementor geeft submit_success pas af nadat de * formulierverwerking succesvol is afgerond. */ if (window.jQuery) { window.jQuery(document).on( 'submit_success', function (event) { const config = getCurrentFormConfig();/* * Luister alleen op de geconfigureerde * Elementor-vacaturepagina. */ if (!config || config.provider !== 'elementor') { return; }const form = event.target;if ( !form || !form.classList || !form.classList.contains('elementor-form') ) { return; }/* * Elementor voegt de ingestelde Form ID doorgaans * toe als verborgen veld. */ const formIdField = form.querySelector( 'input[name="form_id"]' );const receivedFormId = formIdField ? formIdField.value : '';/* * Als de ID beschikbaar is, moet deze overeenkomen * met solliciteer_vigere. */ if ( receivedFormId && receivedFormId !== config.form_id ) { return; }console.log( 'Succesvolle Elementor-inzending ontvangen:', config.form_id );pushFormSubmit(config); } ); } else { console.warn( 'Vigere Form Submit Tracking: jQuery is niet beschikbaar.' ); } })();