PageSourceSearch

https://www.mango-office.ru/static_files_new/js/cookieAccept.js

js mango-office.ru collected 2026-10-01 12:08:37 UTC 4,156 bytes, 107 lines download raw bytes

1(function (window, document) {
2    let cookiePolicyAccepted = null
3
4    /**
5     * @returns {boolean}
6     */
7    window.isCookiePolicyAccepted = () => {
8        return cookiePolicyAccepted ??= document.cookie.match(/applyCookiePolicy=[^;]+/g) !== null
9            || document.cookie.match(/MANGO_GUEST_ID=[^;]+/g) !== null
10            || ((location.hostname.match(/mango-office.ru+/g) === null && document.cookie.match(/skip_captcha=1;+/g) !== null))
11    }
12
13    /**
14     * Callback функции при принятии политики работы с cookie.
15     * @callback CookiePolicyAcceptedCallback
16     */
17
18    /**
19     * Вызов callback функции при принятии политики работы с cookie.
20     * Если политика уже принята, то callback функция вызывается немедленно.
21     * @param {CookiePolicyAcceptedCallback} callback
22     */
23    window.onCookiePolicyAccepted = (callback) => {
24        if (isCookiePolicyAccepted()) {
25            callback()
26            return
27        }
28
29        addEventListener('onCookiePolicyAccepted', () => {
30            callback()
31        })
32    }
33
34    function initCookieApply() {
35        console.log('initCookieApply');
36        if (window.isCookiePolicyAccepted()) {
37            return
38        }
39
40        if (!document.querySelector('#applyCookiePolicyModal')) {
41            let popup = document.createElement('div');
42            popup.classList.add('cookies');
43            popup.id = 'applyCookiePolicyModal';
44            popup.innerHTML = '' +
45                '    Продолжая просмотр этого сайта, Вы соглашаетесь\n' +
46                '    на обработку файлов cookie в соответствии с\n' +
47                '    <b>Политикой использования ООО «МАНГО ТЕЛЕКОМ» файлов cookie.</b>\n' +
48                '    <div class="cookies__btns">\n' +
49                '        <a href="/policies/cookie/">Узнать подробнее</a>\n' +
50                '        <button class="button cookies__btn js-apply-cookie-policy">Принять</button>\n' +
51                '    </div>';
52
53            document.querySelector('body').append(popup);
54
55            popup.classList.add('cookies--active');
56
57            window.applyCookiePolicy = function () {
58                popup.querySelector('.cookies__btn').disabled = true
59                let data = {'action': 'applyCookiePolicy'};
60                fetch('/ajax_new/applyCookiePolicy.php', {
61                    method: 'POST',
62                    headers: {
63                        'Content-Type': 'application/json',
64                        'X-Requested-With': 'XMLHttpRequest'
65                    },
66                    body: JSON.stringify(data),
67                }).then(function (response) {
68                    response.json().then((data) => {
69                        popup.querySelector('.cookies__btn').disabled = false
70                        cookiePolicyAccepted = data.status === 'success'
71                        if (cookiePolicyAccepted) {
72                            popup.classList.remove('cookies--active');
73                            dispatchEvent(new CustomEvent('onCookiePolicyAccepted', {bubbles: true}))
74                        }
75                    })
76                }).catch(function (err) {
77                    console.error(err);
78                    popup.querySelector('.cookies__btn').disabled = false
79                });
80            }
81
82            addListener();
83        }
84    }
85
86    function addListener() {
87        let plate = document.querySelector('.js-apply-cookie-policy');
88        if (!plate) {
89            return;
90        }
91
92        plate.addEventListener('click', () => {
93            applyCookiePolicy();
94        });
95    }
96
97    if (window.frameCacheVars !== undefined) {
98        BX.addCustomEvent('onFrameDataReceived', () => {
99            initCookieApply();
100        });
101        BX.addCustomEvent('onFrameDataRequestFail', () => {
102            initCookieApply();
103        });
104    } else {
105        initCookieApply();
106    }
107})(window, document);

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.