PageSourceSearch

https://voxpay.fr/preloader.js

js voxpay.fr collected 2026-10-06 13:57:50 UTC 2,589 bytes, 87 lines download raw bytes

1;(function () {
2  let isPageReady = false
3  let isRunning = false
4
5  const startTime = Date.now()
6  const timeout = 2000
7
8  const event = new Event('isPageReady')
9
10  function getIsVisible(el) {
11    const {top, height} = el.getBoundingClientRect()
12    const {innerHeight} = window
13    const throttle = window.innerHeight * 0.05
14
15    const isVisible = innerHeight - top > throttle && top + height > throttle
16
17    return isVisible
18  }
19
20  function setIsReady() {
21    clearInterval(interval)
22    isPageReady = true
23    window.isPageReady = isPageReady
24    const splashScreen = document.querySelector('#splash-screen')
25    const mainScreen = document.querySelector('#main-screen')
26    if (splashScreen) {
27      const transitionDelay = 400
28      const transitionDuration = 1000
29      splashScreen.style.pointerEvents = 'none'
30      splashScreen.style.transition = `all ${transitionDuration}ms cubic-bezier(0.5, 1, 0.89, 1) ${transitionDelay}ms`
31      splashScreen.style.transform = 'translateY(-100%)'
32
33      mainScreen.style.pointerEvents = 'none'
34      mainScreen.style.transition = `all ${transitionDuration}ms ease-out ${transitionDelay}ms`
35      mainScreen.style.transform = 'translateY(-200%)'
36
37      setTimeout(() => {
38        window.dispatchEvent(event)
39        splashScreen.remove()
40        mainScreen.remove()
41      }, transitionDuration + transitionDelay)
42    } else {
43      window.dispatchEvent(event)
44    }
45  }
46
47  const interval = setInterval(async () => {
48    if (!isPageReady && !isRunning) {
49      isRunning = true
50
51      const areFontsLoaded = (await document.fonts.ready).status === 'loaded'
52      const isDocumentReady = document.readyState === 'complete'
53
54      if (areFontsLoaded && isDocumentReady) {
55        let allVisibleAssetsLoaded = true
56
57        const images = Array.from(document.images)
58        images.forEach((image) => {
59          const isVisible = getIsVisible(image)
60          const isLoading = !image.complete
61          if (isVisible && isLoading) {
62            allVisibleAssetsLoaded = false
63          }
64        })
65
66        const videos = Array.from(document.getElementsByTagName('video'))
67        videos.forEach((video) => {
68          const isVisible = getIsVisible(video)
69          const isLoading = video.readyState !== 4
70          if (isVisible && isLoading) {
71            allVisibleAssetsLoaded = false
72          }
73        })
74
75        if (!isPageReady && allVisibleAssetsLoaded) {
76          setIsReady()
77        }
78      }
79
80      isRunning = false
81    }
82
83    if (!isPageReady && Date.now() - startTime >= timeout) {
84      setIsReady()
85    }
86  }, 100)
87})()

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.