_formSubmitEventListener: function()

in src/apache-unomi-tracker.js [1313:1348]


        _formSubmitEventListener: function (event) {
            console.debug('[WEM] Registering form event callback');
            var form = /** @type {HTMLFormElement} */(event.target);
            var formName = form.getAttribute('name') ? form.getAttribute('name') : form.getAttribute('id');
            if (formName && wem.formNamesToWatch.indexOf(formName) > -1) {
                console.debug('[WEM] catching form ' + formName);

                var eventCopy = document.createEvent('Event');
                // Define that the event name is 'build'.
                eventCopy.initEvent('submit', event.bubbles, event.cancelable);

                event.stopImmediatePropagation();
                event.preventDefault();

                wem.collectEvent(wem.buildFormEvent(formName, form),
                    function () {
                        form.removeEventListener('submit', wem._formSubmitEventListener, true);
                        form.dispatchEvent(eventCopy);
                        if (!eventCopy.defaultPrevented && !eventCopy.cancelBubble) {
                            form.submit();
                        }
                        form.addEventListener('submit', wem._formSubmitEventListener, true);
                    },
                    function (xhr) {
                        console.error('[WEM] Error while collecting form event: ' + xhr.status + ' ' + xhr.statusText);
                        xhr.abort();
                        form.removeEventListener('submit', wem._formSubmitEventListener, true);
                        form.dispatchEvent(eventCopy);
                        if (!eventCopy.defaultPrevented && !eventCopy.cancelBubble) {
                            form.submit();
                        }
                        form.addEventListener('submit', wem._formSubmitEventListener, true);
                    }
                );
            }
        },