@megamage
Люблю грозу в начале мая!

Что тут не поддерживает Internet Explorer?

Есть скрипт:
const container = document.querySelector('.baloons-app__inner');
	
	function smoothScrollLoop(root, speed = 5) {
			if (!root || !root.firstElementChild) return;

	function elementScrollHeight(el) {
		const style = window.getComputedStyle(el);
		return el.clientHeight + parseFloat(style.marginTop);
	}

	let firstChild = root.getElementsByClassName('baloons-app__item')[0];
	let secondChild = root.getElementsByClassName('baloons-app__item')[1];
	let firstChildHeight = elementScrollHeight(firstChild);
	let secondChildHeight = elementScrollHeight(secondChild);
	let oldTimestamp = performance.now();
	let scrollTop;

	function step(newTimestamp) {
		const timePassed = newTimestamp - oldTimestamp;
		scrollTop = timePassed / 1000 * speed;
		root.style.transform = 'translateY(-' + scrollTop + 'px)';

		if(container.classList.contains('baloons-app__story')) {
			if (scrollTop > 0) {
				firstChild.classList.add('animate');
				if (scrollTop > secondChildHeight || scrollTop > firstChildHeight) {
					secondChild.classList.add('animate');
				}
			}
		}

		if (scrollTop >= firstChildHeight+secondChildHeight) {
			root.style.transform = 'translateY(-' + scrollTop - (firstChildHeight+secondChildHeight) + 'px)';
			firstChild.classList.remove('animate');
			secondChild.classList.remove('animate');
			root.appendChild(firstChild);
			root.appendChild(secondChild);
			firstChild = root.getElementsByClassName('baloons-app__item')[0];
			secondChild = root.getElementsByClassName('baloons-app__item')[1];
			firstChildHeight = elementScrollHeight(firstChild);
			secondChildHeight = elementScrollHeight(secondChild);
			oldTimestamp = newTimestamp;
		}

		window.requestAnimationFrame(step);
	}

	window.requestAnimationFrame(step);
}

smoothScrollLoop(container, 25);


Во всех браузерах адекватно работает, кроме IE (кто бы сомневался).
Подскажите пожалуйста, что может не работать в данном скрипте в IE, и как это можно исправить.
  • Вопрос задан
  • 349 просмотров
Решения вопроса 2
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Дефолтные параметры функций не поддерживаются.
Так как speed вряд ли будет == 0, то вместо
function smoothScrollLoop(root, speed = 5) {
можно написать
function smoothScrollLoop(root, speed) {
speed = speed || 5;
Ответ написан
Lynn
@Lynn
nginx, js, css
Вангую, что IE не нравится дефолтный аргумент speed = 5
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Intspirit Краснодар
от 80 000 до 150 000 ₽