หน้าเว็บอินฟินไนท์เป็นเทคนิคที่นิยมใช้บนเว็บไซต์เพื่อเพิ่มความมีส่วนร่วมของผู้ใช้ โดยการโหลดเนื้อหาใหม่อย่างต่อเนื่องโดยใช้สิทธิ์ของผู้ใช้ในการเรียกดูหน้าเว็บนี้จะทําให้ผู้เข้าชมสามารถทํางานได้นานกว่า และให้ประสบการณ์การท่องเว็บแบบไม่สิ้นสุดได้ การเพิ่มความจุสีด้วยจาวาสคริปต์นั้นตรงไปตรงมา และสามารถปรับให้เข้ากับเว็บไซต์ต่างๆ ได้อย่างง่าย จากสื่อต่าง ๆ จะทําการโหลดข้อมูลผลิตภัณฑ์แบบเครือข่าย เช่น ในบทความนี้ เราจะสํารวจเหตุผล และวิธีการปฏิบัติอย่างดีที่สุดในการเรียกดูข้อความ

ทําไม จึง ใช้ ม้วน หนังสือ อินฟิ ไนท์?

หน้าเว็บที่ยังไม่ได้ทํา ให้มีประโยชน์หลายอย่าง ที่การหมั้นและประสิทธิภาพของเว็บไซต์ โดยตรงคือ

  • [FLT: 0]. สืบค้นเมื่อจําเป็นสําหรับ paggination: โดยกําจัดการโหลดหน้าและคลิกด้วยมือ การเรียกดูจะง่ายขึ้นและง่าย ผู้ใช้สามารถสํารวจเนื้อหาได้โดยไม่ต้องขัดขัด
  • [FLT: 0] การค้นพบเนื้อหาที่: เป็นรายการใหม่โดยอัตโนมัติ นักท่องเที่ยวมีโอกาสจะได้เห็นบทความเพิ่มเติม สินค้า หรือโพสต์ที่อาจพลาด
  • [FLT: 0]. สืบค้นเมื่อผู้ใช้ หมั้น mercogrits: เวลาบนหน้ากระดาษต่อวาระ, และความลึกของม้วนกระดาษมักจะเพิ่มขึ้น เนื่องจากการไหลของการท่องธรรมชาติยังคงดําเนินต่อไป
  • [FLT: 0] previews orter period ผู้ใช้สมัยใหม่ perioder experition: เวทีที่ได้รับความนิยมมากมาย เช่น Twitter, Ponvoli, และ Instagraphy ใช้ม้วนกระดาษอนันต์เพื่อสร้างความรู้สึกคล้ายแอปป์บนเว็บ

อย่างไรก็ตาม การทําให้การเลื่อนแบบไม่มีขอบเขตนั้นไม่เหมาะสมกับทุกบริบท การนั่งที่ผู้ใช้ต้องการค้นหารายการที่เฉพาะ (เช่น รายการไดเรกทอรี หรือผลการค้นหา) อาจได้ประโยชน์จากการใช้ปุ่มวางแบบคลาสสิค หรือปุ่ม "Louad More" การตัดสินใจควรจะขึ้นอยู่กับโครงสร้างที่ผู้ใช้ตั้งใจและเนื้อหา

การ เพิ่ม ม้วน หนังสือ แบบ ไม่ มี การ ติด ต่อ กัน

การทําให้การถอดม้วนข้อความแบบไม่มีที่สิ้นสุดนี้ เกี่ยวข้องกับการฟังเหตุการณ์ [FLT: 0] และทําการเพิ่มเนื้อหาใหม่เมื่อผู้ใช้เข้าใกล้ก้นของหน้ากระดาษ ด้านล่างนี้คือคู่มือแบบทีละขั้น เพื่อสร้างรุ่นง่ายๆ

โครงสร้าง HTML

ตั้งค่าองค์ประกอบของกล่องที่จะบรรจุเนื้อหาเริ่มต้นไว้ รายการใหม่ทั้งหมดจะถูกเพิ่มไว้ที่นี่

<div id="content">
 <!-- Existing items loaded on page load -->
 <div class="item">Item 1</div>
 <div class="item">Item 2</div>
 <div class="item">Item 3</div>
</div>
<div id="loading-indicator" style="display:none;">Loading more content...</div>

ตัวอย่างจาวาสคริปต์

โดยใช้เหตุการณ์การเลื่อนเลื่อน เราตรวจสอบเมื่อผู้ใช้มีการเลื่อนใกล้ด้านล่างของหน้า ธรณีประตู ( ป้องกันการจุดชนวนจากสายเกินไป

const contentDiv = document.getElementById('content');
const loadingIndicator = document.getElementById('loading-indicator');
let isLoading = false; // Prevent duplicate requests

window.addEventListener('scroll', () => {
 const scrollPosition = window.innerHeight + window.scrollY;
 const documentHeight = document.body.offsetHeight;

 if (scrollPosition >= documentHeight - 200 && !isLoading) {
 loadMoreContent();
 }
});

async function loadMoreContent() {
 isLoading = true;
 loadingIndicator.style.display = 'block';

 try {
 // Simulate fetching new content from server
 const newItem = document.createElement('div');
 newItem.className = 'item';
 newItem.textContent = `New item loaded at ${new Date().toLocaleTimeString()}`;
 contentDiv.appendChild(newItem);
 } finally {
 isLoading = false;
 loadingIndicator.style.display = 'none';
 }
}

การ ทํา ให้ ความ อิ่ม ใจ พอ ใจ

สําหรับม้วนกระดาษการผลิตที่พร้อมไม่มีที่สิ้นสุด การดําเนินงานและผู้ใช้จะต้องปรับปรุง

การ เรียก ร้อง ให้ ม้วน หนังสือ เป็น เรื่อง ที่ ต้อง ทํา

การ ทํา ให้ ลาด ตระเวน ทํา ให้ เช็ค วิ่ง ได้ เพียง ชั่ว ครู่ หลัง จาก หยุด การ ม้วน หนังสือ เพียง ชั่ว คราว.

function debounce(func, wait) {
 let timeout;
 return function executedFunction(...args) {
 clearTimeout(timeout);
 timeout = setTimeout(() => func.apply(this, args), wait);
 };
}

window.addEventListener('scroll', debounce(checkScrollPosition, 100));

ใช้เครื่องตรวจจับอินเตอร์เซ็ค

วิธี การ ที่ มี ประสิทธิภาพ กว่า และ ทัน สมัย กว่า คือ [FLT: 0] ผู้ สังเกตการณ์ [FLT: 1]. การ ตรวจ สอบ องค์ ประกอบ ของ ไดโรเกท ที่ วาง ไว้ ที่ ก้น เนื้อหา และ การ เรียก กลับ มา เมื่อ เห็น ภาพ นั้น.

const sentinel = document.createElement('div');
sentinel.id = 'scroll-sentinel';
contentDiv.after(sentinel);

const observer = new IntersectionObserver((entries) => {
 if (entries[0].isIntersecting && !isLoading) {
 loadMoreContent();
 }
});
observer.observe(sentinel);

การ ทํา เช่น นี้ จะ ช่วย ขจัด ความ จําเป็น ที่ จะ ติด ต่อ กับ ผู้ ฟัง ม้วน หนังสือ และ จะ มี ความ ยืดหยุ่น มาก ขึ้น อย่าง เห็น ได้ ชัด ใน เรื่อง เส้น ด้าย หลัก.

การจัดการสิ้นสุดความสง่างาม

เมื่อไม่มีข้อมูลเหลืออยู่ หน้าเว็บนี้ควรจะหยุดการโหลด หากมันใช้แฟล็กหรือการตอบกลับจากเซิร์ฟเวอร์ โดยมีคุณสมบัติ [FLT: 6] ที่สามารถควบคุมมันได้

let hasMoreContent = true;

async function loadMoreContent() {
 if (!hasMoreContent) return;
 // ... fetch data
 if (response.data.length === 0) hasMoreContent = false;
}

กําลังโหลดข้อมูลจริงกับ AJX

เพื่อทําให้การปรับไดนามิคของเลื่อนมีอนันต์ คุณต้องดึงข้อมูลจากเซิร์ฟเวอร์ โดยใช้ AJX. ดึงข้อมูล API คือมาตรฐานสมัยใหม่

ดึงตัวอย่าง API

ตัวอย่างนี้ สันนิษฐานว่าเซิร์ฟเวอร์ของคุณให้ข้อมูลแบบ pripped Json กับ [FLT: 8] ที่อยู่ URL หรือพารามิเตอร์จํานวนหน้า

const contentUrl = '/api/items?page=1';
let currentPage = 1;

async function loadMoreContent() {
 isLoading = true;
 loadingIndicator.style.display = 'block';

 try {
 const response = await fetch(`/api/items?page=${++currentPage}`);
 if (!response.ok) throw new Error('Network error');
 const data = await response.json();

 data.items.forEach(item => {
 const el = document.createElement('div');
 el.className = 'item';
 el.textContent = item.title;
 contentDiv.appendChild(el);
 });

 // If the server indicates no more data, disable loading
 if (data.is_last_page) hasMoreContent = false;
 } catch (error) {
 console.error('Failed to load content:', error);
 } finally {
 isLoading = false;
 loadingIndicator.style.display = 'none';
 }
}

การให้แม่ข่ายบริการมือดี ทํางานล้มเหลว

มักจะมีการจัดการข้อผิดพลาดอย่างแน่นหนาเสมอ แสดงข้อความ "บางอย่างผิดพลาด" ด้วยปุ่ม "ลองอีกครั้ง" เพื่อลดการโหลดครั้งแล้วครั้งเล่า

การปรับปรุงประสบการณ์ของผู้ใช้

UX นุ่มนวลมีความสําคัญมากในการรักษาผู้ใช้เอาไว้ นี่เป็นการปรับปรุงที่ต้องใช้พิจารณา

กําลังโหลดตัวบ่งชี้สถานะ

ใช้ แถบ ปรับ ปรุง, หรือ จอ โครง กระดูก เพื่อ แสดง ว่า กําลัง มี การ นํา เนื้อหา มาก ขึ้น.

<div id="loading" class="loading-spinner"></div>

การเคลื่อนไหวของตัวหมุน CSS คือ น้ําเบา สําหรับจอโครงกระดูก สร้างบล็อกสําหรับแทนที่ที่เลียนแบบรูปแบบเนื้อหาสุดท้าย

การพิจารณาการช่วยใช้งาน

ต้องการการเลื่อนแบบอนันต์ของสิ่งอํานวยความสะดวก:

  • [FLT: 0] ผู้จัดการ: เมื่อรายการใหม่โหลด ให้ประกาศให้ผู้อ่านหน้าจอใช้พื้นที่ [FLT: 11].
  • [FLT: 0]. นําทางกระดาน:[[FLT: 1) ผู้ใช้ประกันสามารถผ่านข้อมูลที่ได้รับมาใหม่ผ่านทางคีย์บอร์ด (แท็บ) หลีกเลี่ยงการดักจับ
  • [FLT: 0] เพิ่มเป็นม้วนที่ไม่รู้จบ:[[FLT: 1) ให้ปุ่ม "Louad More" เป็นตัวสํารองสําหรับผู้ใช้ที่ต้องการการควบคุมโดยตรง
<div id="content" aria-live="polite">...</div>

การตั้งโอปติเมชันของโมบายล์

นอก จาก นั้น การ ปรับ ธรณี ประตู เพื่อ คิด ค่า ของ กล้อง ดู ดาว ที่ เล็ก กว่า และ การ สัมผัส ก็ ยิ่ง ทํา ให้ สามารถ ดู แล ได้ ง่าย ขึ้น.

เทคนิกขั้นสูง

สําหรับสถานการณ์ที่มีประสิทธิภาพสูง เช่น สื่อสังคม หรือแค็ตตาล็อกขนาดใหญ่ ลองพิจารณาการทําให้เหมาะสมที่สุด

เรียกใช้ภาพแบบขี้เกียจ

เนื้อหาใหม่มักรวมรูปภาพไว้ด้วย. Lazy เรียกใช้สิ่งเหล่านี้โดยใช้ [FLT: 13] คุณสมบัติบน ป้าย [FLT: ⁇ Interview [FTT: 1) เพื่อลดการเดินสาย และปรับปรุงเวลาในการโหลดครั้งแรก

<img src="placeholder.jpg" data-src="real-image.jpg" loading="lazy" alt="..." />

การ เลื่อน ตัว เลข สําหรับ รายการ ขนาด ใหญ่

หากการเลื่อนแบบไม่มีขอบเขตของคุณจัดการ โหนด DOM หลายพัน จะลดความน่าดึงดูดลง การเลื่อนแบบเสมือน (หรือการวาดหน้าต่าง) จะทําการแปลงเฉพาะรายการที่เห็นได้เท่านั้น ซึ่งจะช่วยลดการใช้งานหน่วยความจําได้อย่างมาก เช่น [FLT: 0] Clusterize. j (FLT: 1) หรือ react Application สามารถช่วยได้ แต่วิธีจัดการจาวาสคริปต์บริสุทธิ์นั้นเป็นไปได้สําหรับกรณีง่ายๆ

กําลังดาวน์โหลดเนื้อหา

เพื่อ จะ ขจัด สิ่ง ที่ เห็น ได้ ตาม ไม่ทัน ให้ บรรจุ เนื้อหา ชุด ต่อ ไป ลง ใน ภาชนะ ที่ ซ่อน อยู่ ก่อน ที่ จะ จําเป็น.

รูปแบบการวน

การถอดความของหน้าเว็บที่ขาดความจุไม่ได้นั้น สามารถทําให้ผู้ใช้มีความผูกพันได้ดีขึ้นได้มาก โดยให้ประสบการณ์การท่องเว็บแบบเรียบเนียน และต่อเนื่อง จากการดูข้อความพื้นฐาน