Постоянно запускать функцию
Я использую отличный плагин inView, чтобы проверить, видим ли элемент в области просмотра, используя setInterval, но функция запускается только один раз и только тогда, когда элемент видим, а не иначе (должен запускаться оператор else).
var checkViewport = setInterval(function() {
$('#colorbox').on('inview', function(event, visible) {
if (visible) {
console.log('YES');
} else {
console.log('NO');
}
});
}, 5000);
2 ответа
Свяжите событие один раз и проверьте отдельную переменную. Попробуй это:
var isVisible = false;
$('#colorbox').on('inview', function(event, visible) {
isVisible = visible;
});
var checkViewport = setInterval(function() {
if (isVisible) {
console.log('YES');
} else {
console.log('NO');
}
}, 5000);
Вы можете структурировать это по-другому, чтобы убедиться, isVisible
не является глобальной переменной и может быть доступно setInterval
все еще так же.
Код в вашем примере связывает событие только тогда, когда элемент находится в области просмотра. Вы на самом деле ничего не выполняете, просто постоянно связываете событие.
Я бы предложил вместо этого проверить элемент colorbox
каждый интервал, затем вход в консоль, будь то colorbox
виден
Источник (HTML DOM и JavaScript):
var checkViewport = setInterval(function() {
myColorBox = document.getElementById("colorbox");
if (myColorBox.style.visibility == "visible") {
console.log('YES');
} else {
console.log('NO');
}
});
}, 5000);