PageSourceSearch

https://bi-data.ru/assets/js/lead-forms.js?v=20260914

js bi-data.ru collected 2026-10-08 12:05:35 UTC 2,040 bytes, 55 lines download raw bytes

1(function () {
2  'use strict';
3
4  function setStatus(form, message, ok) {
5    var status = form.parentElement.querySelector('.lead-form-message');
6    if (!status) {
7      status = document.createElement('div');
8      status.className = 'lead-form-message';
9      status.setAttribute('role', 'status');
10      status.setAttribute('aria-live', 'polite');
11      form.insertAdjacentElement('afterend', status);
12    }
13    status.textContent = message;
14    status.classList.toggle('is-success', ok);
15    status.classList.toggle('is-error', !ok);
16  }
17
18  document.querySelectorAll('form[data-lead-form]').forEach(function (form) {
19    form.addEventListener('submit', async function (event) {
20      event.preventDefault();
21
22      var submit = form.querySelector('[type="submit"]');
23      if (submit) submit.disabled = true;
24      setStatus(form, 'Отправляем заявку…', true);
25
26      try {
27        var response = await fetch(form.action, {
28          method: 'POST',
29          body: new FormData(form),
30          headers: {
31            'Accept': 'application/json',
32            'X-Requested-With': 'XMLHttpRequest'
33          }
34        });
35        var data = await response.json();
36        if (!response.ok || !data.ok) throw new Error(data.message || 'Не удалось отправить заявку.');
37
38        setStatus(form, data.message, true);
39        var source = form.querySelector('[name="source"]');
40        var leadSource = source ? source.value : 'website';
41        form.reset();
42
43        window.dataLayer = window.dataLayer || [];
44        window.dataLayer.push({event: 'lead_form_success', lead_source: leadSource});
45        if (typeof window.ym === 'function') {
46          window.ym(48255089, 'reachGoal', 'lead_form_success', {source: leadSource});
47        }
48      } catch (error) {
49        setStatus(form, error.message || 'Не удалось отправить заявку. Попробуйте ещё раз.', false);
50      } finally {
51        if (submit) submit.disabled = false;
52      }
53    });
54  });
55}());

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.