document.addEventListener("DOMContentLoaded", () => {
const blocks = document.querySelectorAll(".exp-block.is-lazy");
const observer = new IntersectionObserver(entries => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const block = entry.target;
// 一度だけ実行
if (block.dataset.loaded) return;
block.dataset.loaded = true;
const index = block.dataset.index;
fetch(`/wp-json/savepoint/v1/experience/${index}`)
.then(res => res.text())
.then(html => {
block.innerHTML = html;
});
}
});
}, { rootMargin: "200px" });
blocks.forEach(b => observer.observe(b));
});