Можно ли это как то упростить:
function is_iOS() {
var iDevices = ['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'];
while (iDevices.length) {
if (navigator.platform === iDevices.pop()) return true;
}
return false;
}
function fixedRec(el) {
if($(document).scrollTop() >= el.prev().offset().top + el.prev().outerHeight()) {
if($(document).scrollTop() < el.parent().outerHeight() - ($(window).outerHeight() / 1.5)) {
if(is_iOS() || $(window).width() < 1000){
el.removeClass('fixed').addClass('absolute').css({top: (top - 150)});
} else {
el.removeAttr('style').removeClass('absolute').addClass('fixed');
}
} else {
el.removeAttr('style').removeClass('fixed').addClass('absolute');
}
} else {
el.removeAttr('style').removeClass('absolute').removeClass('fixed');
}
}
Вместо этой жести
function is_iOS() {
var iDevices = ['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'];
while (iDevices.length) {
if (navigator.platform === iDevices.pop()) return true;
}
return false;
}
Можно сделать.
function checkIOS() {
var iDevices = ['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'];
return iDevices.includes(navigator.platform);
}
console.log(checkIOS());
Есть еще способ с .test(), но у вас уже есть массив.
Вы уверены, что там должно быть "ИЛИ" в проверке на устройства и размер окна?
is_iOS
переписываем используя Array.prototype.some
function is_iOS() {
var iDevices = ['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'];
return iDevices.some(dev => dec === navigator.platform);
}
fixedRec
делаем чуть менее выпуклым, за счёт замены else
на return
.
Обязательно добавляем комментарии, что происходит в каждом конкретном случае. Например: Долистали до следующего элемента
.
function fixedRec(el) {
let top = $(document).scrollTop();
if (top < el.prev().offset().top + el.prev().outerHeight()) {
// comment
el.removeAttr('style').removeClass('absolute').removeClass('fixed');
return;
}
if (top >= el.parent().outerHeight() - ($(window).outerHeight() / 1.5)) {
// comment
el.removeAttr('style').removeClass('fixed').addClass('absolute');
return;
}
if(is_iOS() || $(window).width() < 1000){
el.removeClass('fixed').addClass('absolute').css({top: (top - 150)});
} else {
el.removeAttr('style').removeClass('absolute').addClass('fixed');
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Подскажите пожалуйста, раньше использовал функцию live или модуль livequery для доступа к загруженным с помощью AJAX элементам
Все было бы прекрасно, но проблема с последним else ifОн с каждым объектом выдает alert независимо значение true или false
Нас последнем экране товаров не получается сделать отступ сверхуИспользовал плагин Masonry для адаптивной плитки блоков
Как по нажатию на input запретить или разрешить выполнение скрипта?