1// 2// Lazy Loading Related Resources 3// 4 5// Intersection Observer 6//console.log('Intersection Observer Script'); 7let related_content_status = false; 8let is_related_content_loaded = false; 9let is_related_content_failure = false; 10 11let options = { 12 rootMargin: '0px', 13 threshold: 1.0 14}; 15 16function ajax_load_related_content() { 17 // Run AJAX Functions 18 19 // Prevent multiple AJAX calls. 20 if (!is_related_content_loaded && !is_related_content_failure && !related_content_status) { 21 22 let target = document.querySelector(".related-slider"); 23 24 related_content_status = "started"; 25 26 let data = { 27 'action': 'ajax_load_related_content', 28 'keywords': keywords // Global element that runs on page 29 }; 30 let URLParams = new URLSearchParams(Object.entries(data)); 31 32 let query_string = URLParams.toString(); 33 // Set to true once loaded. 34 fetch(ajax_url, { 35 method: 'POST', 36 credentials: "same-origin", // include, same-origin, *omit 37 headers: new Headers({'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}), 38 body: query_string 39 }).then(function (response) { 40 //console.log('Fetch succeeded'); 41 42 return response.text(); 43 }).then(function (response) { 44 is_related_content_loaded = true; 45 related_content_status = "finished"; 46 target.innerHTML = response; 47 target.classList.add('content--slider'); 48 slider_init(); 49 }).catch(function () { 50 target.innerHTML = '<div class="loading-error">Sorry, related resources are currently unavailable.</div>'; 51 is_related_content_failure = true; 52 related_content_status = "failed"; 53 }); 54 } 55} 56 57function handleIntersect(entries, observer) { 58 entries.forEach(entry => { 59 if (entry.isIntersecting) { 60 ajax_load_related_content(); 61 } 62 }); 63} 64 65let observer = new IntersectionObserver(handleIntersect, options); 66 67document.addEventListener('DOMContentLoaded', () => { 68 let target = document.querySelector(".related-slider"); 69 observer.observe(target); 70});
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.