PageSourceSearch

https://365-boxing.ru/wp-content/plugins/external-video-feed-importer/public/js/evf-player-gate.js?ver=0.4.10

js 365-boxing.ru collected 2026-10-04 15:33:39 UTC 6,320 bytes, 150 lines download raw bytes

1(function () {
2    function shouldShowGate() {
3        var settings = (window.EVF_PLAYER_GATE && EVF_PLAYER_GATE.ads) || {};
4        return !!Number(settings.enable_preroll_gate);
5    }
6
7    function loadIframe(player) {
8        var url = player.dataset.evfEmbedUrl;
9        if (!url) {
10            return;
11        }
12        try {
13            var parsed = new URL(url, window.location.href);
14            parsed.searchParams.set('autoplay', '1');
15            url = parsed.toString();
16        } catch (error) {
17            url += (url.indexOf('?') === -1 ? '?' : '&') + 'autoplay=1';
18        }
19        player.innerHTML = '<iframe title="VK Video" src="' + url.replace(/"/g, '&quot;') + '" allow="autoplay; encrypted-media; fullscreen; picture-in-picture" allowfullscreen loading="eager"></iframe>';
20        player.dataset.evfLoaded = '1';
21    }
22
23    function extractPrerollSlotId(html) {
24        var template = document.createElement('div');
25        template.innerHTML = html || '';
26        var slot = template.querySelector('[id^="SRTB_"]');
27        return slot ? slot.id : '';
28    }
29
30    function rerunSapeRtbScripts() {
31        var sources = [];
32        document.querySelectorAll('script[src*="cdn-rtb.sape.ru/rtb-b/js/"]').forEach(function (script) {
33            var src = script.src || '';
34            if (!src || sources.indexOf(src) !== -1) {
35                return;
36            }
37            sources.push(src);
38        });
39        sources.forEach(function (src) {
40            var script = document.createElement('script');
41            script.async = true;
42            script.type = 'text/javascript';
43            script.dataset.evfRtbRerun = '1';
44            script.src = src + (src.indexOf('?') === -1 ? '?' : '&') + 'evf_rerun=' + Date.now();
45            document.body.appendChild(script);
46        });
47    }
48
49    function mountPrerollAd(target) {
50        var frameUrl = (window.EVF_PLAYER_GATE && EVF_PLAYER_GATE.prerollFrameUrl) || '';
51        if (frameUrl) {
52            var iframe = document.createElement('iframe');
53            try {
54                var parsedFrameUrl = new URL(frameUrl, window.location.href);
55                parsedFrameUrl.searchParams.set('evf_t', String(Date.now()));
56                iframe.src = parsedFrameUrl.toString();
57            } catch (error) {
58                iframe.src = frameUrl + (frameUrl.indexOf('?') === -1 ? '?' : '&') + 'evf_t=' + Date.now();
59            }
60            iframe.className = 'evf-ad-frame';
61            iframe.title = 'Advertisement';
62            iframe.loading = 'eager';
63            iframe.referrerPolicy = 'strict-origin-when-cross-origin';
64            target.innerHTML = '';
65            target.appendChild(iframe);
66            return;
67        }
68
69        var html = (window.EVF_PLAYER_GATE && EVF_PLAYER_GATE.prerollHtml) || '';
70        var slotId = extractPrerollSlotId(html);
71        if (slotId) {
72            var existing = document.getElementById(slotId);
73            if (existing && !existing.closest('.evf-preroll-overlay')) {
74                var oldCard = existing.closest('.evf-ad-card');
75                target.appendChild(existing);
76                if (oldCard) {
77                    oldCard.classList.add('evf-ad-card--empty', 'evf-ad-card--moved');
78                }
79                window.setTimeout(rerunSapeRtbScripts, 50);
80                return;
81            }
82        }
83        target.innerHTML = html;
84        window.setTimeout(rerunSapeRtbScripts, 50);
85    }
86
87    function showGate(player) {
88        var settings = (window.EVF_PLAYER_GATE && EVF_PLAYER_GATE.ads) || {};
89        var skipAfter = Math.max(0, Number(settings.skip_after_seconds == null ? 5 : settings.skip_after_seconds));
90        var minSeconds = Math.max(0, Number(settings.minimum_display_seconds == null ? 3 : settings.minimum_display_seconds));
91        player.dataset.evfGate = '1';
92        var overlay = document.createElement('div');
93        overlay.className = 'evf-preroll-overlay';
94        overlay.innerHTML = '<div class="evf-preroll-overlay__panel"><div class="evf-preroll-overlay__ad"></div>' +
95            '<div class="evf-preroll-overlay__controls"><span data-evf-preroll-countdown></span><button type="button" data-evf-preroll-skip disabled>Skip</button></div></div>';
96        player.appendChild(overlay);
97        mountPrerollAd(overlay.querySelector('.evf-preroll-overlay__ad'));
98        var skip = overlay.querySelector('[data-evf-preroll-skip]');
99        var countdown = overlay.querySelector('[data-evf-preroll-countdown]');
100        var elapsed = 0;
101        var timer = setInterval(function () {
102            elapsed++;
103            var remaining = Math.max(0, skipAfter - elapsed);
104            countdown.textContent = remaining ? 'Skip in ' + remaining + 's' : '';
105            if (elapsed >= minSeconds && elapsed >= skipAfter) {
106                skip.disabled = false;
107                skip.textContent = 'Continue';
108            }
109        }, 1000);
110        skip.addEventListener('click', function () {
111            clearInterval(timer);
112            overlay.remove();
113            delete player.dataset.evfGate;
114            loadIframe(player);
115        });
116    }
117
118    document.addEventListener('click', function (event) {
119        var button = event.target.closest('.evf-play-button');
120        if (!button) {
121            return;
122        }
123        var player = button.closest('[data-evf-player]');
124        if (!player || player.dataset.evfLoaded || player.dataset.evfGate) {
125            return;
126        }
127        var behavior = (window.EVF_PLAYER_GATE && EVF_PLAYER_GATE.playBehavior) || 'inline_preroll';
128        if (behavior === 'single_page' && !button.closest('.evf-single__player')) {
129            var targetUrl = player.dataset.evfSingleUrl;
130            if (!targetUrl) {
131                var card = button.closest('.evf-video-card');
132                var link = card ? card.querySelector('.evf-video-card__title a') : null;
133                targetUrl = link ? link.href : '';
134            }
135            if (targetUrl) {
136                window.location.href = targetUrl;
137            }
138            return;
139        }
140        if (behavior === 'inline_direct') {
141            loadIframe(player);
142            return;
143        }
144        if (shouldShowGate()) {
145            showGate(player);
146        } else {
147            loadIframe(player);
148        }
149    });
150})();

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.