PageSourceSearch

https://seranking.com/wp-content/se-common//js/zendesk-chat.js?v=3333

js seranking.com collected 2026-09-24 07:24:52 UTC 4,058 bytes, 99 lines download raw bytes

1(function() {
2    function init() {
3        var isDemoRequestPage = document.querySelector('.page-template-demo-request');
4        var isMarathonForesight2026 = !!document.querySelector('.marathon-webinars_foresight_2026');
5        if (!isMarathonForesight2026) {
6            if (isDemoRequestPage) {
7                setTimeout(runLoadZendeskWidget, 2000);
8            } else {
9                window.addEventListener('scroll', runLoadZendeskWidget);
10            }
11        }
12    }
13    
14    function runLoadZendeskWidget() {
15        window.requestAnimationFrame(function() {
16            loadZendeskWidget();
17            window.removeEventListener('scroll', runLoadZendeskWidget);
18        });
19    }
20    
21    function loadZendeskWidget() {
22        var zendeskScript = document.createElement('script');
23        zendeskScript.async = true;
24        zendeskScript.defer = true;
25        zendeskScript.id = 'ze-snippet';
26        zendeskScript.src = 'https://static.zdassets.com/ekr/snippet.js?key=afd4c1f4-ec8b-4b18-b130-cf4045ea8dba';
27        document.body.appendChild(zendeskScript);
28        if (window.innerWidth > 1279) {
29            zendeskScript.addEventListener('load', function() {
30                let timer = setInterval(() => {
31                    const iframe = document.getElementById('launcher');
32                    if (iframe) {
33                        initCloseButton(iframe);
34                        clearInterval(timer);
35                    }
36                }, 1000);
37            });
38        }
39    }
40    
41    function initCloseButton(iframe) {
42        var closeButtonWrapper = document.querySelector('.zendesk-close-button-wrapper');
43        if (!closeButtonWrapper) {
44            return;
45        }
46        
47        closeButtonWrapper.style.display = 'block';
48        var closeButtonClass = '.zendesk-close-button';
49        var closeButton = closeButtonWrapper.querySelector(closeButtonClass);
50        
51        setCloseButtonWrapperStyles(closeButtonWrapper, iframe);
52        
53        if (!document.querySelector('iframe[name="Messaging window"]')) {
54            iframe.addEventListener('mouseover', showCloseButton);
55        }
56        closeButtonWrapper.addEventListener('mouseout', function(event) {
57            if (event.relatedTarget && event.relatedTarget !== iframe && !event.relatedTarget.closest(
58                closeButtonClass)) {
59                closeButton.classList.remove('active');
60            }
61        });
62        closeButton.addEventListener('click', function() {
63            zE('messenger', 'hide');
64            closeButtonWrapper.style.display = 'none';
65        });
66        zE('messenger:on', 'open', function() {
67            closeButton.classList.remove('active');
68            iframe.removeEventListener('mouseover', showCloseButton);
69        });
70        zE('messenger:on', 'close', function() {
71            iframe.addEventListener('mouseover', showCloseButton);
72        });
73        
74        function showCloseButton() {
75            closeButton.classList.add('active');
76            iframe.classList.add('mouseover');
77        }
78        
79        function setCloseButtonWrapperStyles(closeButtonWrapper, iframe) {
80            var iframeSize = iframe.clientWidth;
81            var iframeBottomSpace = Number(iframe.contentWindow.getComputedStyle(iframe).bottom.slice(0, -2));
82            var iframeRightSpace = Number(iframe.contentWindow.getComputedStyle(iframe).right.slice(0, -2));
83            var extraSpace = 16;
84            
85            closeButtonWrapper.style.setProperty('--height', iframeSize + 2 * extraSpace + 'px');
86            closeButtonWrapper.style.setProperty('--width', iframeSize + 2 * extraSpace + 'px');
87            closeButtonWrapper.style.setProperty('--right', iframeRightSpace - extraSpace + 'px');
88            closeButtonWrapper.style.setProperty('--bottom', iframeBottomSpace - extraSpace + 'px');
89        }
90    }
91    
92    if (document.readyState !== 'loading') {
93        init();
94    } else {
95        document.addEventListener('DOMContentLoaded', function() {
96            init();
97        });
98    }
99})();

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.