Я встречаю странное поведение для следующего кода.Lazy loading иногда не работает в угловом
function linkFunc(scope, element, attribute) {
var page = angular.element($window);
page.bind('scroll', function() {
var windowHeight = "innerHeight" in window ? window.innerHeight : document.documentElement.offsetHeight;
var body = document.body, html = document.documentElement;
var docHeight = Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);
var windowBottom = windowHeight + window.pageYOffset;
if (windowBottom >= docHeight) {
scope.$apply(attribute.myDirective);
}
});
}
выше кусок кода, который обнаруживает, если в нижней части страницы будет достигнута, если ее достигнуто это будет вызывать любые функции связываются с myDirective
Основной проблемой является то, что большую часть времени ленивые погрузочные работы, и myDirective
получает успешное название. Однако в некоторых случаях ленивая загрузка не будет работать, и я не смог воспроизвести ошибку.
Я пробовал использовать различные размеры экрана, разные браузеры, но похоже, что ошибка происходит случайно.
Возможно, кому-то это случилось с ними раньше, и может указать мне направление?
Edit:
Больше информации
Я был в состоянии воспроизвести ошибку после того, как немного поэкспериментировать.
В основном, когда увеличение в процентах от браузера < 100 %
, window.pageY
возвращает десятичное значение, которое немного неточным, которые вызывают windowBottom
быть выключен с помощью 0.1
к 0.9
например.
console.log(windowBottom); // 1646.7747712336175
console.log(docHeight); // 1647
Кто-нибудь знает, почему это происходит?
Edit 2:
Такое поведение также не детерминированной, а дробная часть верно. !
Это довольно необычный способ разработки угловой директивы; это противоречит принципам разработки углов, чтобы начать связывать выполнение JavaScript с конкретными событиями пользовательского интерфейса. – Claies
У вас нет консоли Chrome в нижней части экрана? Мне кажется, что это может немного причудливо повлиять на восприятие высоты подобного кода. – cYrixmorten
@cYrixmorten У меня не было консоли Chrome chrome в нижней части экрана, хотя я и пробовал это, но поведение по-прежнему не детерминировано. – testing