1jQuery(function ($) { 2 var $links = $(".chapters_links a"); 3 if (!$links.length) return; 4 5 // Charger APIs seulement si besoin 6 var needsVimeo = $links.filter('[data-is-vimeo="1"]').length > 0; 7 var needsYT = $links.filter('[data-is-vimeo="0"]').length > 0; 8 if (needsVimeo && !window.Vimeo) { 9 $.getScript("https://player.vimeo.com/api/player.js"); 10 } 11 if (needsYT && !window.YT) { 12 $.getScript("https://www.youtube.com/iframe_api"); 13 } 14 15 $links.on("click", function (e) { 16 e.preventDefault(); 17 var $link = $(this); 18 var $parent = $link.closest(".chapters_links"); 19 var target = $parent.data("target"); 20 var isVimeo = $parent.data("is-vimeo") == 1; 21 var start = parseInt($parent.data("start"), 10); 22 var embedUrl = $link.data("embedurl"); 23 var $iframe = $(target).find("iframe"); 24 if (!$iframe.length) return; 25 var iframe = $iframe[0]; 26 27 // Cas où la source change (switch plateforme ou vidéo) 28 if (iframe.src.replace(/#.*$/, "") !== embedUrl.replace(/#.*$/, "")) { 29 iframe.onload = function () { 30 if (isVimeo && window.Vimeo) { 31 var player = new Vimeo.Player(iframe); 32 player.setCurrentTime(start).catch(console.error); 33 } 34 if (!isVimeo && window.YT) { 35 iframe.contentWindow.postMessage( 36 JSON.stringify({ 37 event: "command", 38 func: "seekTo", 39 args: [start, true], 40 }), 41 "*" 42 ); 43 iframe.contentWindow.postMessage( 44 JSON.stringify({ 45 event: "command", 46 func: "playVideo", 47 }), 48 "*" 49 ); 50 } 51 iframe.onload = null; 52 }; 53 iframe.src = embedUrl; 54 } else { 55 // Cas où la source ne change pas, juste avancer la tête de lecture 56 if (isVimeo && window.Vimeo) { 57 var player = new Vimeo.Player(iframe); 58 player 59 .setCurrentTime(start) 60 .then(function () { 61 player.play(); 62 }) 63 .catch(console.error); 64 } 65 if (!isVimeo && window.YT) { 66 iframe.contentWindow.postMessage( 67 JSON.stringify({ 68 event: "command", 69 func: "seekTo", 70 args: [start, true], 71 }), 72 "*" 73 ); 74 iframe.contentWindow.postMessage( 75 JSON.stringify({ 76 event: "command", 77 func: "playVideo", 78 }), 79 "*" 80 ); 81 } 82 } 83 }); 84}); 85 86// Sélectionne toutes les balises ayant la classe fa-twitter 87var twitter = document.querySelectorAll(".fa-twitter"); 88// Boucle de parcours 89for (var i = 0; i < twitter.length; i++) { 90 // Retire la classe fa-twitter de l'élément html 91 twitter[i].classList.remove("fa-twitter"); 92 // Ajoute la classe fa-x-twitter à l'élément html 93 twitter[i].classList.add("fa-x-twitter"); 94} 95 96// Sélectionne toutes les balises ayant la classe fa-square-twitter 97var squareTwitter = document.querySelectorAll(".fa-square-twitter"); 98// Boucle de parcours 99for (var i = 0; i < squareTwitter.length; i++) { 100 // Retire la classe fa-square-twitter de l'élément html 101 squareTwitter[i].classList.remove("fa-square-twitter"); 102 // Ajoute la classe fa-square-x-twitter à l'élément html 103 squareTwitter[i].classList.add("fa-square-x-twitter"); 104} 105 106// Sélectionne toutes les balises ayant la classe et-icon-twitter 107var etIconTwitter = document.querySelectorAll(".et-icon-twitter"); 108// Boucle de parcours 109for (var i = 0; i < etIconTwitter.length; i++) { 110 // Retire le classe et-icon-twitter de l'élément html 111 etIconTwitter[i].classList.remove("et-icon-twitter"); 112 // Ajoute les classes fa-brands et fa-x-twitter 113 etIconTwitter[i].classList.add("fa-brands"); 114 etIconTwitter[i].classList.add("fa-x-twitter"); 115}
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.