PageSourceSearch

https://convergencespp.com/wp-content/plugins/code-fixes/assets/js/cco-vimeo.js

js convergencespp.com collected 2026-10-04 13:30:16 UTC 4,051 bytes, 101 lines download raw bytes

1(function () {
2  "use strict";
3
4  console.log("[CCO Vimeo] Initialisation du script. Paramétrez vos préférences dans Code fixes dans l'admin");
5
6  // 1. Optimisation des liens Vimeo (class + param autoplay)
7  document.querySelectorAll('a[href*="player.vimeo.com"]').forEach(function (a) {
8    if (!a.classList.contains("grve-video-popup")) {
9      a.classList.add("grve-video-popup");
10      console.log("[CCO Vimeo] Classe grve-video-popup ajoutée au lien :", a);
11    }
12    let href = a.getAttribute("href");
13    let optimized = reorderAutoplayParam(href);
14    if (optimized !== href) {
15      a.setAttribute("href", optimized);
16      console.log("[CCO Vimeo] Param autoplay replacé en premier dans le lien :", optimized);
17    }
18  });
19
20  // 2. Optimisation de l'intégration des iframes Vimeo (fluid-width-video-wrapper)
21  function processFluidWidthWrappers() {
22    document.querySelectorAll(".fluid-width-video-wrapper").forEach(function (wrapper) {
23      const parent = wrapper.parentElement;
24      if (parent && parent.nodeName === "DIV" && parent.hasAttribute("style") && parent.getAttribute("style").replace(/\s/g, "").toLowerCase().startsWith("padding:56.25%")) {
25        parent.removeAttribute("style");
26        parent.classList.add("cco-vimeo-container");
27        console.log("[CCO Vimeo] Style supprimé et classe cco-vimeo-container ajoutée au parent :", parent);
28      }
29    });
30  }
31
32  // Premier check au chargement
33  processFluidWidthWrappers();
34
35  // Observer les ajouts dynamiques de nodes dans le body
36  if (window.MutationObserver) {
37    const observer = new MutationObserver(function (mutationsList) {
38      let found = false;
39      for (const mutation of mutationsList) {
40        if (mutation.type === "childList") {
41          mutation.addedNodes.forEach(function (node) {
42            if (node.nodeType === 1 && node.classList && node.classList.contains("fluid-width-video-wrapper")) {
43              found = true;
44            }
45            // On regarde aussi si des enfants pourraient contenir la class
46            if (node.nodeType === 1 && node.querySelector && node.querySelector(".fluid-width-video-wrapper")) {
47              found = true;
48            }
49          });
50        }
51      }
52      if (found) {
53        processFluidWidthWrappers();
54      }
55    });
56    observer.observe(document.body, { childList: true, subtree: true });
57    console.log("[CCO Vimeo] MutationObserver initialisé pour .fluid-width-video-wrapper");
58  } else {
59    // Fallback lent (pour les très vieux navigateurs)
60    setInterval(processFluidWidthWrappers, 10000);
61    console.log("[CCO Vimeo] Pas de MutationObserver, fallback avec interval 10s");
62  }
63
64  // 3. Optimisation des iframes Vimeo embed (position param autoplay)
65  document.querySelectorAll('iframe[src*="player.vimeo.com"]').forEach(function (iframe) {
66    const src = iframe.getAttribute("src");
67    const optimizedSrc = reorderAutoplayParam(src);
68    if (optimizedSrc !== src) {
69      iframe.setAttribute("src", optimizedSrc);
70      console.log("[CCO Vimeo] Param autoplay replacé en premier dans le src iframe :", optimizedSrc);
71    }
72  });
73
74  /**
75   * Déplace le param autoplay=1 en premier dans l'URL (GET), gère & et &
76   */
77  function reorderAutoplayParam(url) {
78    if (!url) return url;
79    let tmp = url.replace(/&/g, "&");
80    const urlParts = tmp.split("?");
81    if (urlParts.length < 2) return url;
82    let base = urlParts[0] + "?";
83    let params = urlParts[1].split("&");
84    const paramsNoAutoplay = [];
85    let autoplayVal = null;
86
87    params.forEach(function (p) {
88      if (p.indexOf("autoplay=") === 0) {
89        autoplayVal = p;
90      } else {
91        paramsNoAutoplay.push(p);
92      }
93    });
94    if (!autoplayVal) return url; // rien à faire
95
96    const reordered = [autoplayVal].concat(paramsNoAutoplay).join("&");
97    let rebuilt = base + reordered;
98    console.log("[CCO Vimeo] reorderAutoplayParam:", rebuilt);
99    return rebuilt;
100  }
101})();

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.