1document.addEventListener('DOMContentLoaded', function() { 2 if(!document.getElementById('tvr-post-container')) { 3 return; 4 } 5 var page = 2; // Starting page number 6 var loading = false; // To prevent multiple AJAX requests 7 var loadMoreButton = document.getElementById('tvr-load-more'); 8 var postContainer = document.getElementById('tvr-post-container'); 9 var maxPages = parseInt(postContainer.dataset.postMaxPages); 10 11 if (page > maxPages) { 12 loadMoreButton.style.display = 'none'; 13 } 14 15 loadMoreButton.addEventListener('click', function() { 16 if (loading) return; 17 loading = true; 18 loadMoreButton.classList.toggle('loading'); 19 20 var formData = new FormData(); 21 formData.append('action', 'load_more_posts'); 22 formData.append('page', page); 23 formData.append('post_per_page', postContainer.dataset.postPerPage); 24 formData.append('post_type', postContainer.dataset.postTypeArchive); // Can be changed to any post type 25 26 fetch('/wp/wp-admin/admin-ajax.php', { 27 method: 'POST', 28 body: formData 29 }) 30 .then(response => response.text()) 31 .then(data => { 32 if (data) { 33 var tempDiv = document.createElement('div'); 34 tempDiv.innerHTML = data; 35 while (tempDiv.firstChild) { 36 postContainer.appendChild(tempDiv.firstChild); 37 } 38 page++; 39 loading = false; 40 loadMoreButton.classList.toggle('loading'); 41 if (page > maxPages) { 42 loadMoreButton.style.display = 'none'; 43 } 44 } else { 45 loadMoreButton.style.display = 'none'; 46 } 47 }) 48 .catch(error => { 49 console.error('Error:', error); 50 loading = false; 51 loadMoreButton.classList.toggle('loading'); 52 }); 53 }); 54});
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.