PageSourceSearch

https://www.bne-online.de/wp-content/plugins/mm-antispam/mm-antispam.js?ver=1.31

js bne-online.de collected 2026-09-24 22:18:42 UTC 4,467 bytes, 118 lines download raw bytes

1/*
2	MM Antispam
3	(C) Minkenberg GmbH, Christoph Peters
4	https://www.minkenberg.de
5	Version: 1.31
6*/
7
8let mmAntispamUserActive = false;
9function mmAntispamMarkActive() {
10    if (mmAntispamUserActive) return;
11    mmAntispamUserActive = true;
12    document.querySelectorAll('input[name=mm_asp_act]').forEach(function (input) {
13        input.value = '1';
14    });
15}
16function mmAntispamWatchActivity() {
17    const events = ['mousemove', 'keydown', 'touchstart', 'scroll', 'pointerdown'];
18    events.forEach(function (ev) {
19        window.addEventListener(ev, mmAntispamMarkActive, { passive: true, capture: true });
20    });
21    // Sicherheitsnetz fuer AJAX-/Popup-geladene Forms:
22    // Beim Submit das Aktivitaetsfeld im submittenden Form nachfuehren, falls auf der Seite bereits Aktivitaet stattfand
23    document.addEventListener('submit', function (e) {
24        if (!mmAntispamUserActive) return;
25        if (!e.target || typeof e.target.querySelectorAll !== 'function') return;
26        e.target.querySelectorAll('input[name=mm_asp_act]').forEach(function (input) {
27            input.value = '1';
28        });
29    }, true);
30}
31
32function mmAntispamhandleForms(selector) {
33    const forms = document.querySelectorAll(selector);
34    if (forms.length === 0) return;
35    const fieldValue = btoa(location.host);
36    forms.forEach(form => {
37        if (!form.querySelector('input[name=mm_asp_jsdyn]')) {
38            const input = document.createElement('input');
39            input.type = 'hidden';
40            input.name = 'mm_asp_jsdyn';
41            input.value = fieldValue;
42            form.appendChild(input);
43        }
44        form.setAttribute('autocomplete', 'mm_asp_lastname');
45        const crtsInput = form.querySelector('input[name=mm_asp_crts]');
46        if (crtsInput && !crtsInput.dataset.mmAspFetched) {
47            crtsInput.dataset.mmAspFetched = '1';
48            fetch(ajax_postajax.ajaxurl + '?action=mm_antispam_getcrts')
49                .then(response => response.text())
50                .then(data => {
51                    crtsInput.value = data;
52                })
53                .catch(error => console.error('Error fetching crts:', error));
54        }
55        // Falls (z.B. fuer Bricks/Divi) das Aktivitaetsfeld noch nicht im Form ist, einfuegen
56        if (!form.querySelector('input[name=mm_asp_act]')) {
57            const actInput = document.createElement('input');
58            actInput.type = 'hidden';
59            actInput.name = 'mm_asp_act';
60            actInput.value = mmAntispamUserActive ? '1' : '0';
61            form.appendChild(actInput);
62        }
63    });
64}
65
66function mmAntispamInjectFormFields(selector) {
67    const forms = document.querySelectorAll(selector);
68    if (forms.length === 0) return;
69    if (ajax_fields && ajax_fields.fields) {
70        const fieldsHtml = atob(ajax_fields.fields);
71        forms.forEach(form => {
72            if (form.dataset.mmAspInjected) return;
73            form.dataset.mmAspInjected = '1';
74            form.insertAdjacentHTML("beforeend", fieldsHtml);
75        });
76    }
77}
78
79// Backwards-Compat: alter Funktionsname wird intern weiterverwendet
80function mmAntispamInjectBrixForm(selector) {
81    mmAntispamInjectFormFields(selector);
82}
83
84function mmAntispamProcessAll() {
85    mmAntispamhandleForms('form.wpcf7-form');
86    mmAntispamhandleForms('form.elementor-form');
87    mmAntispamhandleForms('form.avia_ajax_form');
88    mmAntispamhandleForms('form.frm-fluent-form');
89
90    // Bricks: Antispam-Felder per JS einfuegen, dann handlen
91    mmAntispamInjectFormFields('form.brxe-form');
92    mmAntispamhandleForms('form.brxe-form');
93
94    // Divi (Divi 4 klassisch + Divi 5 React): Antispam-Felder per JS einfuegen, dann handlen
95    mmAntispamInjectFormFields('form.et_pb_contact_form');
96    mmAntispamhandleForms('form.et_pb_contact_form');
97}
98
99function mmAntispamObserveDOM() {
100    if (typeof MutationObserver !== 'function') return;
101    let scheduled = false;
102    const observer = new MutationObserver(function () {
103        if (scheduled) return;
104        scheduled = true;
105        // Per Microtask-Wartezeit Mehrfach-Auslösungen während eines Renders bündeln
106        setTimeout(function () {
107            scheduled = false;
108            mmAntispamProcessAll();
109        }, 100);
110    });
111    observer.observe(document.body, { childList: true, subtree: true });
112}
113
114document.addEventListener("DOMContentLoaded", function () {
115    mmAntispamWatchActivity();
116    mmAntispamProcessAll();
117    mmAntispamObserveDOM();
118});

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.