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

Method getPageElement

Pagetual/pagetual.user.js:5663–6031  ·  view source on GitHub ↗
(doc, curWin, dontFind)

Source from the content-addressed store, hash-verified

5661 }
5662
5663 getPageElement(doc, curWin, dontFind) {
5664 if (doc === document && this.docElementValid()) {
5665 return this.docPageElement;
5666 }
5667 if (!curWin) curWin = doc.defaultView;
5668 let pageElement = null;
5669 let self = this;
5670 let body = getBody(doc);
5671 if (this.curSiteRule.pageElement) {
5672 let pageElementSel = this.curSiteRule.pageElement;
5673 if (Array && Array.isArray && Array.isArray(pageElementSel)) {
5674 pageElementSel = pageElementSel[nextIndex < pageElementSel.length ? nextIndex : 0];
5675 }
5676 pageElement = getAllElements(pageElementSel, doc);
5677 if (this.curSiteRule.smart && (!pageElement || pageElement.length === 0)) {
5678 const childSelMatch = />\s*\*$/;
5679 const targetChild = childSelMatch.test(pageElementSel);
5680 if (targetChild) pageElementSel = pageElementSel.replace(childSelMatch, "");
5681 let pageElementSelSplit = pageElementSel.split(">");
5682 while(pageElementSelSplit && pageElementSelSplit.length > 5) {
5683 pageElementSelSplit.shift();
5684 let tempSel = pageElementSelSplit.join(">");
5685 pageElement = getAllElements(tempSel, doc);
5686 if (pageElement && pageElement.length === 1) {
5687 if (targetChild) {
5688 pageElement = pageElement.children;
5689 }
5690 this.curSiteRule.pageElement = tempSel + (targetChild ? ">*" : "");
5691 break;
5692 } else pageElement = null;
5693 }
5694 if (!pageElement || pageElement.length === 0) {
5695 let pageElementSelTrim = pageElementSel.replace(/:nth-of-type\(\d+\)/g, "");
5696 pageElement = getAllElements(pageElementSelTrim, doc);
5697 if (pageElement && pageElement.length === 1) {
5698 if (targetChild) {
5699 pageElement = pageElement.children;
5700 }
5701 this.curSiteRule.pageElement = pageElementSelTrim + (targetChild ? ">*" : "");
5702 } else if (!pageElement || pageElement.length === 0) {
5703 pageElementSelTrim = pageElementSel.replace(/[^\s\>]+\+/g, "");
5704 pageElement = getAllElements(pageElementSelTrim, doc);
5705 if (pageElement && pageElement.length === 1) {
5706 if (targetChild) {
5707 pageElement = pageElement.children;
5708 }
5709 this.curSiteRule.pageElement = pageElementSelTrim + (targetChild ? ">*" : "");
5710 } else if (!pageElement || pageElement.length === 0) {
5711 pageElementSelTrim = pageElementSel.replace(/\.[\w\-_]+/g, "");
5712 pageElement = getAllElements(pageElementSelTrim, doc);
5713 if (pageElement && pageElement.length === 1) {
5714 if (targetChild) {
5715 pageElement = pageElement.children;
5716 }
5717 this.curSiteRule.pageElement = pageElementSelTrim + (targetChild ? ">*" : "");
5718 } else pageElement = null;
5719 } else pageElement = null;
5720 }

Callers 8

getInsertMethod · 0.95
initPageMethod · 0.80
requestDocFunction · 0.80
distToBottomFunction · 0.80
checkIframeFunction · 0.80
checkPageFunction · 0.80
getPageEleFunction · 0.80
forceRefreshFunction · 0.80

Calls 13

docElementValidMethod · 0.95
getInsertMethod · 0.95
setPageElementCssMethod · 0.95
lazyImgActionMethod · 0.95
filterElesMethod · 0.95
openInNewTabMethod · 0.95
getAllElementsFunction · 0.85
getElementBottomFunction · 0.85
getElementTopFunction · 0.85
debugFunction · 0.85
compareNodeNameFunction · 0.85
removeMethod · 0.80

Tested by

no test coverage detected