| 5572 | } |
| 5573 | |
| 5574 | getValidSize(ele, win) { |
| 5575 | if (!win) return {h: 0, w: 0}; |
| 5576 | let eleStyle = win.getComputedStyle(ele); |
| 5577 | if (!ele.offsetParent && eleStyle.display !== "contents" && (eleStyle.position !== "fixed" || eleStyle.opacity === 0)) { |
| 5578 | return {h: 0, w: 0}; |
| 5579 | } |
| 5580 | if (ele.children && ele.children.length === 1 && (ele.offsetWidth === 0 || ele.offsetHeight === 0)) { |
| 5581 | ele = ele.children[0]; |
| 5582 | } |
| 5583 | let h = ele.scrollHeight, w; |
| 5584 | if (eleStyle.overflow === "hidden") { |
| 5585 | h = ele.offsetHeight; |
| 5586 | w = ele.offsetWidth; |
| 5587 | } else w = parseInt(ele.offsetWidth || ele.scrollWidth); |
| 5588 | if (h === 0 && ele.parentNode && ele.parentNode.children.length === 1) { |
| 5589 | h = ele.parentNode.scrollHeight; |
| 5590 | } |
| 5591 | while (h === 0 && ele.children && ele.children.length === 1) { |
| 5592 | ele = ele.children[0]; |
| 5593 | h = ele.scrollHeight; |
| 5594 | } |
| 5595 | if (h === 0 && ele.children && ele.children.length) { |
| 5596 | let maxChildSize = {h: 0}, self = this; |
| 5597 | [].forEach.call(ele.children, el => { |
| 5598 | let childSize = self.getValidSize(el, win); |
| 5599 | if (childSize.h > maxChildSize.h) maxChildSize = childSize; |
| 5600 | }); |
| 5601 | if (maxChildSize.h !== 0) return maxChildSize; |
| 5602 | } |
| 5603 | const maxNum = 2147483647; |
| 5604 | let moreChild = ele.children[0], minOffsetTop = maxNum; |
| 5605 | while (moreChild) { |
| 5606 | if ((moreChild.offsetParent === ele || moreChild.offsetParent === ele.offsetParent)) { |
| 5607 | let curOffsetTop = moreChild.offsetParent === ele.offsetParent ? moreChild.offsetTop - ele.offsetTop : moreChild.offsetTop; |
| 5608 | if (curOffsetTop < minOffsetTop) { |
| 5609 | minOffsetTop = curOffsetTop; |
| 5610 | } |
| 5611 | } |
| 5612 | moreChild = moreChild.nextElementSibling; |
| 5613 | } |
| 5614 | if (h && minOffsetTop !== maxNum && minOffsetTop > 0) { |
| 5615 | h -= minOffsetTop; |
| 5616 | } |
| 5617 | return {h: h, w: w}; |
| 5618 | } |
| 5619 | |
| 5620 | checkTargetChildren(ele, curWin, articleNum, curHeight) { |
| 5621 | let pf = false; |