MCPcopy Index your code
hub / github.com/hoothin/UserScripts / getValidSize

Method getValidSize

Pagetual/pagetual.user.js:5574–5618  ·  view source on GitHub ↗
(ele, win)

Source from the content-addressed store, hash-verified

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;

Callers 1

checkElementMethod · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected