1function _lstest(){ 2 var test = 'test'; 3 try { 4 localStorage.setItem(test, test); 5 localStorage.removeItem(test); 6 return true; 7 } catch(e) { 8 return false; 9 } 10} 11 12function _image_responsive_test_webp_reel (){ 13 // Méthode synchrone - mais Firefox ne détecte pas correctement (tant pis pour l'instantâ¦) 14 var elem = document.createElement('canvas'); 15 16 if (!!(elem.getContext && elem.getContext('2d'))) { 17 // was able or not to get WebP representation 18 if (elem.toDataURL('image/webp').indexOf('data:image/webp') == 0) { 19 if (_lstest()) localStorage.setItem("_image_responsive_test_webp", "oui"); 20 return 1; 21 } else { 22 var img = new Image(); 23 img.onload = function() {if (_lstest()) localStorage.setItem("_image_responsive_test_webp", "oui") }; 24 img.onerror = function() {if (_lstest()) localStorage.setItem("_image_responsive_test_webp", "non")}; 25 img.src = "data:image/webp;base64,UklGRjIAAABXRUJQVlA4ICYAAACyAgCdASoCAAEALmk0mk0iIiIiIgBoSygABc6zbAAA/v56QAAAAA=="; 26 } 27 } 28 29 // very old browser like IE 8, canvas not supported 30 return false; 31} 32var _image_responsive_test_webp_val = "init"; 33function _image_responsive_test_webp (){ 34 if (_image_responsive_test_webp_val == "init") { 35 if ( _lstest() && localStorage.getItem("_image_responsive_test_webp")) { 36 if (localStorage.getItem("_image_responsive_test_webp") == "oui") _image_responsive_test_webp_val = true; 37 else _image_responsive_test_webp_val = false; 38 } else { 39 _image_responsive_test_webp_val = _image_responsive_test_webp_reel(); 40 } 41 } 42 return _image_responsive_test_webp_val; 43} 44 45 46 47function _image_responsive_test_avif_reel (){ 48 // Méthode synchrone - mais Firefox ne détecte pas correctement (tant pis pour l'instantâ¦) 49 var elem = document.createElement('canvas'); 50 51 if (!!(elem.getContext && elem.getContext('2d'))) { 52 // was able or not to get avif representation 53 if (elem.toDataURL('image/avif').indexOf('data:image/avif') == 0) { 54 if (_lstest()) localStorage.setItem("_image_responsive_test_avif", "oui"); 55 return 1; 56 } else { 57 var img = new Image(); 58 img.onload = function() {if (_lstest()) localStorage.setItem("_image_responsive_test_avif", "oui") }; 59 img.onerror = function() {if (_lstest()) localStorage.setItem("_image_responsive_test_avif", "non")}; 60 img.src = "data:;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUEAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABwAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgSAAAAAAABNjb2xybmNseAABAA0ABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACRtZGF0EgAKBzgABpAQ0GkyDx/wZ///+LPw4ITv2bKbYA=="; 61 } 62 } 63 return false; 64} 65var _image_responsive_test_avif_val = "init"; 66function _image_responsive_test_avif (){ 67 if (_image_responsive_test_avif_val == "init") { 68 if ( _lstest() && localStorage.getItem("_image_responsive_test_avif")) { 69 if (localStorage.getItem("_image_responsive_test_avif") == "oui") _image_responsive_test_avif_val = true; 70 else _image_responsive_test_avif_val = false; 71 } else { 72 _image_responsive_test_avif_val = _image_responsive_test_avif_reel(); 73 } 74 } 75 return _image_responsive_test_avif_val; 76} 77 78function charger_url_image_responsive(this_img) { 79 var dPR = window.devicePixelRatio; 80 var src = this_img.attr("data-src"); 81 var l = this_img.attr("data-l"); 82 var h = this_img.attr("data-h"); 83 84 if (this_img.hasClass("image_responsive_v")) { 85 var vertical = true; 86 var dim= parseInt(this_img.parent().height()); 87 } else { 88 var vertical = false;
89 var dim= parseInt(this_img.parent().width()); 90 } 91 92 var forcer_zoom = this_img.attr("data-zoom-responsive"); 93 if (forcer_zoom) dim = dim * forcer_zoom; 94 95 var tailles = this_img.attr("data-tailles"); 96 97 var numdim = []; 98 if (tailles) { 99 var w_max = 0; 100 var taille_max = 0; 101 var t = $.parseJSON(tailles.replace(/\\"/g, '"')); 102 var changer_w = 1; 103 104 var i = 0; 105 106 $.each(t, function (index, value) { 107 i++; 108 value = parseInt(value); 109 numdim[value] = i; 110 //console.log(value + " " + dim + " " + changer_w); 111 if (changer_w == 1) w_max = value; 112 if (value >= dim) changer_w = 0; 113 //numdim[w_max] = i; 114 if (value >= taille_max) taille_max = value; 115 116 }); 117 //console.log ("Wmax: "+w_max); 118 if (w_max > 0) dim = w_max; 119 } 120 // console.log ("W: "+dim); 121 122 // console.log ("L: "+l); 123 124 var autorisees = this_img.attr("data-autorisees"); 125 if (autorisees) { 126 autorisees = $.parseJSON(autorisees.replace(/\\"/g, '"')); 127 } 128 var autorisees_webp = this_img.attr("data-autorisees_webp"); 129 if (autorisees_webp) { 130 if (_image_responsive_test_webp()) autorisees = $.parseJSON(autorisees_webp.replace(/\\"/g, '"')); 131 } 132 133 // Si l'image est trop petite, c'est pas la peine de demander trop grand⦠134 if (vertical && parseInt(dim) > parseInt(h)) { 135 dim = h; 136 dpr = false; 137 } else if (parseInt(dim) > parseInt(l)) { 138 dim = l; 139 dpr = false; 140 } 141 142 143 if (dim == 0) { 144 145 } else { 146 if(dPR && dPR > 1) { 147 // si l'image d'origine n'est pas nettement plus grande que l'image demandée, 148 // ne pas passer dPR, sinon on récupère image de même taille mais trop compressée 149 if (vertical && h < 1.5*dim) dPR = false; 150 else if (l < 1.5*dim) dPR = false; 151 // forcer à 2 152 else dPR = 2; 153 } else { 154 dPR = false; 155 } 156 if (autorisees && autorisees[dim]) { 157 if (dPR < 1.5) url_img = autorisees[dim][1]; 158 else url_img = autorisees[dim][2]; 159 } 160 else { 161 if (htactif) { 162 racine = src.substr(0, src.length-4); 163 terminaison = src.substr(src.length-3, 3); 164 var url_img = racine+"-resp"+dim; 165 if (vertical) url_img = url_img + "v"; 166 if (dPR) url_img = url_img + "-"+dPR; 167 url_img = url_img + "."+terminaison; 168 if (_image_responsive_test_webp()) url_img = url_img + ".webp"; 169 } else { 170 var url_img = "index.php?action=image_responsive&img="+src+"&taille="+dim; 171 if (vertical) url_img = url_img + "v"; 172 if (dPR) url_img = url_img + "&dpr="+dPR; 173 } 174 } 175 this_img.attr("src", url_img).height("").width("").removeAttr("data-top"); 176 } 177 178} 179 180function charger_url_background_responsive(this_img) { 181 var dPR = window.devicePixelRatio; 182 vertical = false;
183 184 var dim_l= parseInt(this_img.width()); 185 var dim_h = parseInt(this_img.height()); 186 187 if (dim_l > dim_h) { 188 var mode = "i"; 189 var src = this_img.attr("data-italien-src"); 190 var l = this_img.attr("data-italien-l"); 191 var h = this_img.attr("data-italien-h"); 192 } else { 193 var mode = "p"; 194 var src = this_img.attr("data-portrait-src"); 195 var l = this_img.attr("data-portrait-l"); 196 var h = this_img.attr("data-portrait-h"); 197 } 198 var mtime = this_img.attr("data-mtime"); 199 200 201 if ( (dim_l/dim_h) > (l/h) ) { /* fenetre plus large que l'image */ 202 dim = dim_l; 203 } else { 204 dim = dim_h *l / h; 205 var pourcent = "auto 100%"; 206 } 207 208 var tailles = this_img.attr("data-tailles"); 209 210 if (tailles) { 211 var w_max = 0; 212 var t = $.parseJSON(tailles.replace(/\\"/g, '"')); 213 var changer_w = 1; 214 215 $.each(t, function (index, value) { 216 value = parseInt(value); 217 //console.log(value + " " + d + " " + changer_w); 218 if (changer_w == 1) w_max = value; 219 if (value >= dim) changer_w = 0; 220 }); 221 // console.log ("Wmax: "+w_max); 222 if (w_max > 0) dim = w_max; 223 } 224 225 226 227 // Si l'image est trop petite, c'est pas la peine de demander trop grand⦠228 if (vertical && parseInt(dim) > parseInt(h)) { 229 dim = h; 230 dpr = false; 231 } else if (parseInt(dim) > parseInt(l)) { 232 dim = l; 233 dpr = false; 234 } 235 236 //console.log ("Wapres: "+dim); 237 238 239 if (dim == 0) { 240 241 } else { 242 if(dPR && dPR > 1) { 243 // si l'image d'origine n'est pas nettement plus grande que l'image demandée, 244 // ne pas passer dPR, sinon on récupère image de même taille mais trop compressée 245 if (vertical && h < 1.5*dim) dPR = false; 246 else if (l < 1.5*dim) dPR = false; 247 // forcer à 2 248 else dPR = 2; 249 } else { 250 dPR = false; 251 } 252 253 254 var autorisees = this_img.attr("data-autorisees"); 255 if (autorisees) { 256 autorisees = $.parseJSON(autorisees.replace(/\\"/g, '"')); 257 } 258 var autorisees_webp = this_img.attr("data-autorisees_webp"); 259 if (autorisees_webp) { 260 if (_image_responsive_test_webp()) autorisees = $.parseJSON(autorisees_webp.replace(/\\"/g, '"')); 261 } 262 dim = Math.round(dim); 263 264 if (autorisees && autorisees[dim] && autorisees[dim][mode]) { 265 if (dPR < 1.5) url_img = autorisees[dim][mode][1]; 266 else url_img = autorisees[dim][mode][2]; 267 } else { 268 if (htactif) { 269 racine = src.substr(0, src.length-4); 270 terminaison = src.substr(src.length-3, 3); 271 var url_img = racine+"-resp"+dim; 272 if (vertical) url_img = url_img + "v"; 273 if (dPR) url_img = url_img + "-"+dPR; 274 url_img = url_img + "."+terminaison; 275 if (mtime) url_img = url_img + "?" + mtime; 276 277 } else { 278 var url_img = "index.php?action=image_responsive&img="+src+"&taille="+dim; 279 if (vertical) url_img = url_img + "v"; 280 if (dPR) url_img = url_img + "&dpr="+dPR; 281 if (mtime) url_img = url_img + "&mtime="+mtime; 282 } 283 } 284 285 286 if (this_img.attr("data-background-actif") != url_img) { 287 this_img.attr("data-background-actif", url_img); 288 this_img.css("background-image", "url("+url_img+")"); 289 } 290 } 291 292} 293 294function charger_url_image_responsive_svg(this_img) { 295 var dPR = window.devicePixelRatio; 296 var src = this_img.attr("data-src"); 297 var l = this_img.attr("data-l"); 298 var h = this_img.attr("data-h"); 299 300 var cl = this_img.attr("class"); 301 302 if (cl.indexOf("image_responsive_svg_v") > 0) { 303 var vertical = true; 304 var dim= parseInt(this_img.parent().height()); 305 306 //console.log("Dimension v: "+dim); 307 308 } else { 309 var vertical = false;
310 var dim= parseInt(this_img.parent().width()); 311 //console.log("Dimension h: "+dim); 312 } 313 314 315 var forcer_zoom = this_img.attr("data-zoom-responsive"); 316 if (forcer_zoom) dim = dim * forcer_zoom; 317 318 319 320 var tailles = this_img.attr("data-tailles"); 321 322 if (tailles) { 323 var w_max = 0; 324 var t = $.parseJSON(tailles.replace(/\\"/g, '"')); 325 var changer_w = 1; 326 327 $.each(t, function (index, value) { 328 value = parseInt(value); 329 // console.log(value + " " + dim + " " + changer_w); 330 if (changer_w == 1) w_max = value; 331 if (value >= dim) changer_w = 0; 332 }); 333 // console.log ("Wmax: "+w_max); 334 if (w_max > 0) dim = w_max; 335 } 336 // console.log ("W: "+dim); 337 338 // console.log ("L: "+l); 339 340 var autorisees = this_img.attr("data-autorisees"); 341 if (autorisees) { 342 autorisees = $.parseJSON(autorisees.replace(/\\"/g, '"')); 343 } 344 345 346 // Si l'image est trop petite, c'est pas la peine de demander trop grand⦠347 if (vertical && parseInt(dim) > parseInt(h)) { 348 dim = h; 349 dpr = false; 350 } else if (parseInt(dim) > parseInt(l)) { 351 dim = l; 352 dpr = false; 353 } 354 355 //console.log ("Wapres: "+dim); 356 357 358 if (dim == 0) { 359 360 } else { 361 362 if(dPR && dPR > 1) { 363 // si l'image d'origine n'est pas nettement plus grande que l'image demandée, 364 // ne pas passer dPR, sinon on récupère image de même taille mais trop compressée 365 if (vertical && h < 1.5*dim) dPR = false; 366 else if (l < 1.5*dim) dPR = false; 367 // forcer à 2 368 else dPR = 2; 369 370 } else { 371 dPR = false; 372 } 373 374 if (autorisees && autorisees[dim]) { 375 if (dPR < 1.5) url_img = autorisees[dim][1]; 376 else url_img = autorisees[dim][2]; 377 } 378 else { 379 if (htactif) { 380 racine = src.substr(0, src.length-4); 381 terminaison = src.substr(src.length-3, 3); 382 var url_img = racine+"-resp"+dim; 383 if (vertical) url_img = url_img + "v"; 384 if (dPR) url_img = url_img + "-"+dPR; 385 url_img = url_img + "."+terminaison; 386 } else { 387 var url_img = "index.php?action=image_responsive&img="+src+"&taille="+dim; 388 if (vertical) url_img = url_img + "v"; 389 if (dPR) url_img = url_img + "&dpr="+dPR; 390 } 391 } 392 393 this_img.attr("xlink:href", url_img).height("").width("").removeAttr("data-top"); 394 } 395 396 397} 398 399function calculer_top_image_responsive() { 400 // Calculer le "top" des images lazy 401 $(".lazy, [data-lazy]").each(function() { 402 _calculer_top_image_responsive($(this)); 403 }); 404 405 charger_image_responsive(); 406} 407 408function _calculer_top_image_responsive(this_img) { 409 var offset = this_img.offset().top; 410 this_img.attr("data-top", offset).addClass("lazy"); 411} 412 413// valeur du scrollTop que l'on peut forcer par un outil externe (notamment skrollr) 414var scrollT = false; 415 416function charger_image_lazy() { 417 if (scrollT) var sTop = scrollT; 418 else var sTop = $(window).scrollTop(); 419 420 var hauteur = $(window).height(); 421 422 var limite_haut = sTop - 1.5*hauteur; 423 424 var limite_bas = sTop + 1.5*hauteur; 425 426 $(".image_responsive.lazy[data-top]").each(function() { 427 this_img = $(this); 428 var h = this_img.attr("data-top"); 429 if (h <= limite_bas && h >= limite_haut) { 430 charger_url_image_responsive(this_img); 431 } else {// sinon remettre l'image d'origine (rien ou basse def) 432 this_img.attr("src", this_img.attr("data-src-lazy")); 433 } 434 }); 435 $(".image_responsive_svg.lazy[data-top]").each(function() { 436 this_img = $(this); 437 var h = this_img.attr("data-top"); 438 if (h <= limite_bas && h >= limite_haut) { 439 charger_url_image_responsive_svg(this_img); 440 } else {// sinon remettre l'image d'origine (rien ou basse def) 441 this_img.attr("src", this_img.attr("data-src-lazy")); 442 } 443 }); 444 $("[data-responsive=background].lazy[data-top]").each(function() { 445 this_img = $(this); 446 var h = this_img.attr("data-top"); 447 if (h <= limite_bas && h >= limite_haut) charger_url_background_responsive(this_img); 448 }); 449} 450 451 452function _charger_image_responsive () { 453 454 $("[data-zoom-responsive]").each(function() { 455 var forcer_zoom = $(this).attr("data-zoom-responsive"); 456 if (forcer_zoom > 1) $(this).find(".image_responsive").attr("data-zoom-responsive", forcer_zoom); 457 }); 458 459 // Remplacer les URL non lazy 460 // Cacher l'ensemble puis tout réafficher, pour éviter un repaint pour chaque image 461 var t = $(".image_responsive:not('.lazy'):not('.avec_picturefill')"); 462 if (t.length > 20) t.hide(); 463 t.each(function() { 464 charger_url_image_responsive($(this)); 465 }); 466 if (t.length > 20) t.show(); 467 468 $(".image_responsive_svg:not('.lazy')").each(function() { 469 charger_url_image_responsive_svg($(this)); 470 }); 471 charger_image_lazy(); 472 473 $("[data-responsive=background]:not('.lazy')").each(function() { 474 charger_url_background_responsive($(this)); 475 }); 476} 477 478$(document).ready(calculer_top_image_responsive); 479$(window).smartresize(calculer_top_image_responsive); 480$(window).on("load",calculer_top_image_responsive); 481$(document).on("ajaxComplete", calculer_top_image_responsive); 482 483 484 485$(window).on("scroll", charger_image_responsive); 486 487var didScroll_image_responsive = false 488 489function charger_image_responsive() { 490 didScroll_image_responsive = true; 491} 492 493function render_image_responsive() { 494 if(didScroll_image_responsive) { 495 didScroll_image_responsive = false;
496 _charger_image_responsive() 497 } 498} 499 500(function animloop_image_responsive(){ 501 requestAnimationFrame(animloop_image_responsive); 502 render_image_responsive(); 503})(); 504 505 506
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.