PageSourceSearch

https://www.liverpoolschool.com.br/novosite/wp-content/themes/enigma/js/custom-audio-player.js?ver=1790260492

js liverpoolschool.com.br collected 2026-09-24 14:36:25 UTC 2,575 bytes, 65 lines download raw bytes

1document.addEventListener("DOMContentLoaded", function () {
2    document.querySelectorAll(".custom-audio-player").forEach((player) => {
3        const audio = player.querySelector("audio");
4        const playPauseBtn = player.querySelector("#playPauseBtn");
5        const progressBar = player.querySelector("#progress-bar");
6        const progressContainer = player.querySelector(".progress-container");
7        const currentTimeEl = player.querySelector("#current-time");
8        const totalDurationEl = player.querySelector("#total-duration");
9
10        function formatTime(seconds) {
11            const minutes = Math.floor(seconds / 60);
12            const secs = Math.floor(seconds % 60);
13            return `${minutes}:${secs < 10 ? '0' : ''}${secs}`;
14        }
15
16     
17     function updateTotalDuration() {
18    if (!isNaN(audio.duration) && audio.duration > 0) {
19        totalDurationEl.textContent = formatTime(audio.duration);
20    } else {
21        setTimeout(updateTotalDuration, 500); // Retry after 500ms if duration is not ready
22    }
23 }
24
25        
26        
27
28        // Ensure duration updates properly
29        audio.addEventListener("loadedmetadata", updateTotalDuration);
30        audio.addEventListener("canplay", updateTotalDuration);
31        audio.addEventListener("canplaythrough", updateTotalDuration);
32
33        playPauseBtn.addEventListener("click", () => {
34            if (audio.paused) {
35                audio.play().catch(error => {
36                    console.error("Audio play failed:", error);
37                });
38                playPauseBtn.textContent = "⏸";
39            } else {
40                audio.pause();
41                playPauseBtn.textContent = "▶";
42            }
43        });
44
45        audio.addEventListener("timeupdate", () => {
46            if (!isNaN(audio.duration) && audio.duration > 0) {
47                const progress = (audio.currentTime / audio.duration) * 100;
48                progressBar.style.width = progress + "%";
49                currentTimeEl.textContent = formatTime(audio.currentTime);
50            }
51        });
52
53        progressContainer.addEventListener("click", (e) => {
54            if (!isNaN(audio.duration) && audio.duration > 0) {
55                const clickX = e.offsetX;
56                const width = progressContainer.clientWidth;
57                audio.currentTime = (clickX / width) * audio.duration;
58            }
59        });
60
61        audio.addEventListener("ended", () => {
62            playPauseBtn.textContent = "▶";
63        });
64    });
65});

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.