1(function ($) { 2 $(document).ready(function() { 3 4 trackElementsOnDisplay(document.querySelectorAll('[data-track-ga-display-site-wrap]'), true); 5 trackElementsOnDisplay(document.querySelectorAll('[data-track-ga-display-inside-main]'), false); 6 7 function trackElementsOnDisplay(elements, areSiteWrapElements) { 8 // if there are no block to track, stop the function 9 if (elements.length === 0) { 10 return; 11 } 12 13 // l'habillage est visible que sur desktop à partir d'une certaine taille d'écran 14 if (areSiteWrapElements) { 15 $(window).resize(function() { 16 for (let i = 0; i < elements.length; i++) { 17 const element = elements[i]; 18 19 // à partir de 1260px de largeur d'écran, l'habillage est visible (on compte un affichage). 20 if ($(window).width() >= 1260) { 21 triggerGaDisplayEvent(element, 'trackGaDisplaySiteWrap'); 22 } 23 } 24 }); 25 26 return; 27 } 28 29 // Les éléments qui sont dans le contenu du site (main) sont visibles quand l'élément est affiché sur tout l'écran 30 // --> Attention si l'élément est plus grand que l'écran, cette fonction ne fonctionne pas ! 31 $(document).scroll(function() { 32 for (let i = 0; i < elements.length; i++) { 33 const element = elements[i]; 34 35 // on display element 36 if ($(element).css('display') !== 'none' && onScreen(element) === true) { 37 triggerGaDisplayEvent(element, 'trackGaDisplayInsideMain'); 38 } 39 } 40 }); 41 } 42 43 function triggerGaDisplayEvent(element, dataset) { 44 const isDisplayed = element.dataset.displayed ? JSON.parse(element.dataset.displayed) : false; 45 46 if (isDisplayed === false) { 47 // trigger dataset function with eval 48 eval(element.dataset[dataset]); 49 50 element.dataset.displayed = JSON.stringify(true); 51 } 52 } 53 54 function onScreen(elm) { 55 const rect = elm.getBoundingClientRect(); 56 const viewHeight = $(window).height(); 57 58 const topVisible = rect.top < viewHeight && rect.top > 0; 59 const bottomVisible = rect.bottom < viewHeight && rect.bottom > 0; 60 61 return topVisible && bottomVisible; 62 } 63 64 }); 65}( jQuery )); 66
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.