Как проверить, виден ли элемент после прокрутки?

Используйте pycobertura . Это инструмент командной строки для предотвращения регрессии покрытия кода, отличаясь двумя отчетами о покрытии. Это говорит о том, что ваш новый код лучше или хуже, чем предыдущая версия, с охватом.

$ pycobertura diff ./master/coverage.xml ./myfeature/coverage.xml

Это язык не агностик, поскольку он просто опирается на отчет Cobertura (XML-файл), сгенерированный вашим тестированием /

Pycobertura также может генерировать HTML-отчеты, которые прекрасно вписываются в инструменты CI / CD, такие как Jenkins.

enter image description here [/g2]

https://github.com/aconrad/pycobertura

1071
задан yoavf 19 December 2018 в 17:45
поделиться

5 ответов

Это должно добиться цели:

function isScrolledIntoView(elem)
{
    var docViewTop = $(window).scrollTop();
    var docViewBottom = docViewTop + $(window).height();

    var elemTop = $(elem).offset().top;
    var elemBottom = elemTop + $(elem).height();

    return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}

Простая Служебная функция Это позволит Вам называть служебную функцию, которая принимает элемент, который Вы ищете и если Вы хотите, чтобы элемент был полностью в поле зрения или частично.

function Utils() {

}

Utils.prototype = {
    constructor: Utils,
    isElementInView: function (element, fullyInView) {
        var pageTop = $(window).scrollTop();
        var pageBottom = pageTop + $(window).height();
        var elementTop = $(element).offset().top;
        var elementBottom = elementTop + $(element).height();

        if (fullyInView === true) {
            return ((pageTop < elementTop) && (pageBottom > elementBottom));
        } else {
            return ((elementTop <= pageBottom) && (elementBottom >= pageTop));
        }
    }
};

var Utils = new Utils();

Использование

var isElementInView = Utils.isElementInView($('#flyout-left-container'), false);

if (isElementInView) {
    console.log('in view');
} else {
    console.log('out of view');
}
1217
ответ дан Andrea Casaccia 20 December 2018 в 03:45
поделиться
  • 1
    Ну, по крайней мере, необходимо зарегистрировать исключение поэтому, когда объединение соединения переполняется или слушатель базы данных doesn' t дают Вам новые соединения, Вы будете знать то, что вызывает его. – Roberto Linares 15 November 2013 в 03:12

WebResourcesDepot записал сценарий для загрузки при прокрутке , который использует jQuery некоторое время назад. Можно просмотреть их Живая Демонстрация Здесь . Говядина их функциональности была этим:

$(window).scroll(function(){
  if  ($(window).scrollTop() == $(document).height() - $(window).height()){
    lastAddedLiveFunc();
  }
});

function lastAddedLiveFunc() { 
  $('div#lastPostsLoader').html('<img src="images/bigLoader.gif">');
  $.post("default.asp?action=getLastPosts&lastPostID="+$(".wrdLatest:last").attr("id"),
    function(data){
        if (data != "") {
          $(".wrdLatest:last").after(data);         
        }
      $('div#lastPostsLoader').empty();
    });
};
15
ответ дан Sampson 20 December 2018 в 03:45
поделиться
  • 1
    да, темные прекрасные взгляды, но нет никакой работы во всем:/, было бы замечательно иметь работу видео быстрого запуска для этого. I' m испытывающий затруднений как новый пользователь управления исходным кодом:/ – designer-trying-coding 17 February 2010 в 02:28

У меня есть такой метод в моем приложении, но это не использует jQuery:

/* Get the TOP position of a given element. */
function getPositionTop(element){
    var offset = 0;
    while(element) {
        offset += element["offsetTop"];
        element = element.offsetParent;
    }
    return offset;
}

/* Is a given element is visible or not? */
function isElementVisible(eltId) {
    var elt = document.getElementById(eltId);
    if (!elt) {
        // Element not found.
        return false;
    }
    // Get the top and bottom position of the given element.
    var posTop = getPositionTop(elt);
    var posBottom = posTop + elt.offsetHeight;
    // Get the top and bottom position of the *visible* part of the window.
    var visibleTop = document.body.scrollTop;
    var visibleBottom = visibleTop + document.documentElement.offsetHeight;
    return ((posBottom >= visibleTop) && (posTop <= visibleBottom));
}

Редактирование: Этот метод работает хорошо на Т.Е. (по крайней мере, версия 6). Прочитайте комментарии для совместимости с И следующие

3
ответ дан Romain Linsolas 20 December 2018 в 03:45
поделиться
  • 1
    Да Темный является действительно медленным при просмотре reposity истории. – math 18 June 2010 в 21:13
function isScrolledIntoView(elem) {
    var docViewTop = $(window).scrollTop(),
        docViewBottom = docViewTop + $(window).height(),
        elemTop = $(elem).offset().top,
     elemBottom = elemTop + $(elem).height();
   //Is more than half of the element visible
   return ((elemTop + ((elemBottom - elemTop)/2)) >= docViewTop && ((elemTop + ((elemBottom - elemTop)/2)) <= docViewBottom));
}
7
ответ дан 19 December 2019 в 20:15
поделиться

На данный момент лучший метод, который я нашел, - это плагин jQuery появляться . Работает как шарм.

Имитирует настраиваемое событие «появления», которое срабатывает, когда элемент прокручивается в поле зрения или иным образом становится видимым для пользователя.

 $ ('# foo'). Появляться (function () {
 $ (this) .text ('Привет, мир');
});

Этот плагин можно использовать для предотвращения ненужных запросов на контент, который скрыт или находится за пределами видимой области.

120
ответ дан 19 December 2019 в 20:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: