PageSourceSearch

https://cdn.keylife.org/wp-content/themes/keylife/assets/js/ajax-related-resources.js?ver=7.1.2

js keylife.org collected 2026-10-04 00:25:41 UTC 2,195 bytes, 70 lines download raw bytes

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.