advertData = []; // функция проверки полной видимости элемента function checkPosition(index, element, d, w) { // координаты дива let div_position = element.offset(); // отступ сверху let div_top = div_position.top; // отступ слева let div_left = div_position.left; // ширина let div_width = element.width(); // высота let div_height = element.height(); // проскроллено сверху let top_scroll = d.scrollTop(); // проскроллено слева let left_scroll = d.scrollLeft(); // ширина видимой страницы let screen_width = w.width(); // высота видимой страницы let screen_height = w.height(); // координаты углов видимой области let see_x1 = left_scroll; let see_x2 = screen_width + left_scroll; let see_y1 = top_scroll; let see_y2 = screen_height + top_scroll; // координаты углов искомого элемента let div_x1 = div_left; let div_x2 = div_left + div_width; let div_y1 = div_top; let div_y2 = div_top + div_height; // проверка - виден див полностью или нет if (div_x1 >= see_x1 && div_x2 <= see_x2 && div_y1 >= see_y1 && div_y2 <= see_y2) { delete advertData[index]; return index; } return false; } function searchShownBanners() { let viewed = []; let d = $(document); let w = $(window); $.each(advertData, function (index, element) { let result = checkPosition(index, element, d, w); if (result !== false) { viewed.push(result); } }); if (viewed.length > 0) { makeView(viewed); } } // отправка id баннера, попавшего во viewport для записи просмотра function makeView(viewed) { $.post("/banner.ajax?act=viewport", { viewed: viewed }, function (data) { }, "json"); }