(doc, curWin, dontFind)
| 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 | } |
no test coverage detected