Управление DOM с помощью JavaScript в современных браузерах и IE 11+
Исходя из данного элемента ele
, мы пересекаем все родители до корня документа (document.body). Для каждого родительского узла мы проверяем, является ли он прокручиваемым узлом.
const isScrollable = function(ele) {
const hasScrollableContent = ele.scrollHeight > ele.clientHeight;
const overflowYStyle = window.getComputedStyle(ele).overflowY;
const isOverflowHidden = overflowYStyle.indexOf('hidden') !== -1;
return hasScrollableContent && !isOverflowHidden;
};
const getScrollableParent = function(ele) {
return (!ele || ele === document.body)
? document.body
: (isScrollable(ele) ? ele : getScrollableParent(ele.parentNode));
};