handleIntersect = (entries, observer) => {
entries.forEach(entry => {
let targetElementId = entry.target.dataset.id;
if (entry.isIntersecting) {
console.log(`Element with id ${targetElementId} became visible.`);
becameLastVisibleTimestamps[targetElementId] = Date.now();
} else {
let timeVisible =
Date.now() - becameLastVisibleTimestamps[targetElementId];
totalTimeVisible[targetElementId] += timeVisible;
console.log(
`Element with id ${targetElementId} became invisible. ` +
`Element was visible for ${timeVisible} ms now, ` +
`and ${totalTimeVisible[targetElementId]} ms in total so far.`
);
}
let stats = statsHtml.querySelector("#stats");
stats.innerHTML = "";
for (let [key, value] of Object.entries(totalTimeVisible)) {
let li = document.createElement("li");
stats.append(li);
li.append(`Element ${key}: ${value} ms`);
}
});
}