Если хотите понимать, просмотрел ли пользователь ваш блок, то это бекенд. А если простой пример на js, то так:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div class="message">Message</div>
</body>
<style>
.message{
margin-top: 2300px;
margin-bottom: 1000px;
}
</style>
<script>
let message = document.querySelector('.message')
function onEntry(entry) {
entry.forEach(change => {
if (change.isIntersecting) {
alert('Простотрено')
}
});
}
let options = {
threshold: [0.5] };
let observer = new IntersectionObserver(onEntry, options);
let elements = document.querySelectorAll('.message');
for (let elm of elements) {
observer.observe(elm);
}
</script>
</html>