startTracker: function()

in src/apache-unomi-tracker.js [81:152]


        startTracker: function (digitalDataOverrides = undefined) {
            // Check before start
            let cookieDisabled = !navigator.cookieEnabled;
            let noSessionID = !wem.sessionID || wem.sessionID === '';
            let crawlerDetected = navigator.userAgent;
            if (crawlerDetected) {
                const browserDetector = new Crawler();
                crawlerDetected = browserDetector.isCrawler(navigator.userAgent);
            }
            if (cookieDisabled || noSessionID || crawlerDetected) {
                document.addEventListener('DOMContentLoaded', function () {
                    wem._executeFallback('navigator cookie disabled: ' + cookieDisabled + ', no sessionID: ' + noSessionID + ', web crawler detected: ' + crawlerDetected);
                });
                return;
            }

            // Register base context callback
            wem._registerCallback(function () {
                if (wem.cxs.profileId) {
                    wem.setCookie(wem.trackerProfileIdCookieName, wem.cxs.profileId);
                }
                if (!wem.cxs.profileId) {
                    wem.removeCookie(wem.trackerProfileIdCookieName);
                }

                if (!wem.disableTrackedConditionsListeners) {
                    wem._registerListenersForTrackedConditions();
                }
            }, 'Default tracker', 0);

            // Load the context once document is ready
            document.addEventListener('DOMContentLoaded', function () {
                wem.DOMLoaded = true;

                // enrich digital data considering extensions
                wem._handleDigitalDataOverrides(digitalDataOverrides);

                // complete already registered events
                wem._checkUncompleteRegisteredEvents();

                // Dispatch javascript events for the experience (perso/opti displayed from SSR, based on unomi events)
                wem._dispatchJSExperienceDisplayedEvents();

                // Some event may not need to be send to unomi, check for them and filter them out.
                wem._filterUnomiEvents();

                // Add referrer info into digitalData.page object.
                wem._processReferrer();

                // Build view event
                const viewEvent = wem.buildEvent('view', wem.buildTargetPage(), wem.buildSource(wem.digitalData.site.siteInfo.siteID, 'site'));
                viewEvent.flattenedProperties = {};

                // Add URLParameters
                if (location.search) {
                    viewEvent.flattenedProperties['URLParameters'] = wem.convertUrlParametersToObj(location.search);
                }
                // Add interests
                if (wem.digitalData.interests) {
                    viewEvent.flattenedProperties['interests'] = wem.digitalData.interests;
                }

                // Register the page view event, it's unshift because it should be the first event, this is just for logical purpose. (page view comes before perso displayed event for example)
                wem._registerEvent(viewEvent, true);

                if (wem.activateWem) {
                    wem.loadContext();
                } else {
                    wem._executeFallback('wem is not activated on current page');
                }
            });
        },