()
| 12667 | } catch(e) {} |
| 12668 | let pageEleTryTimes = 0; |
| 12669 | async function checkIframe() { |
| 12670 | if (urlChanged || isPause) { |
| 12671 | return callback(false, false); |
| 12672 | } |
| 12673 | try { |
| 12674 | doc = doc || iframe.contentDocument || iframe.contentWindow.document; |
| 12675 | if (checkEval && !await checkEval(doc)) { |
| 12676 | setTimeout(() => { |
| 12677 | checkIframe(); |
| 12678 | }, waitTime); |
| 12679 | return; |
| 12680 | } else { |
| 12681 | let preCode = ruleParser.curSiteRule.pagePre, eles = null; |
| 12682 | if (preCode) { |
| 12683 | try { |
| 12684 | let preResult; |
| 12685 | if (typeof preCode == 'function') { |
| 12686 | preResult = await preCode(doc.documentElement.innerHTML, doc); |
| 12687 | } else if (preCode.length == 2) { |
| 12688 | preResult = doc.documentElement.innerHTML.replace(new RegExp(preCode[0], "gi"), preCode[1]); |
| 12689 | } else { |
| 12690 | preResult = await new AsyncFunction("response", "doc", '"use strict";' + preCode)(doc.documentElement.innerHTML, doc); |
| 12691 | } |
| 12692 | if (typeof preResult !== "undefined") { |
| 12693 | if (typeof preResult === "string") { |
| 12694 | setHTML(doc.documentElement, preResult, doc); |
| 12695 | } else eles = preResult; |
| 12696 | } |
| 12697 | } catch(e) { |
| 12698 | debug(e); |
| 12699 | } |
| 12700 | } |
| 12701 | let base = doc.querySelector("base"); |
| 12702 | ruleParser.basePath = (base && base.href) || url; |
| 12703 | if (eles === null) eles = ruleParser.getPageElement(doc, iframe.contentWindow, pageEleTryTimes < 25); |
| 12704 | if (eles && eles.length > 0) { |
| 12705 | await ruleParser.hookUrl(doc); |
| 12706 | await callback(doc, eles); |
| 12707 | } else if (pageEleTryTimes++ < 100) { |
| 12708 | getBody(doc).scrollTop = 9999999; |
| 12709 | if (doc.documentElement) { |
| 12710 | doc.documentElement.scrollTop = 9999999; |
| 12711 | } |
| 12712 | setTimeout(() => { |
| 12713 | checkIframe(); |
| 12714 | }, waitTime); |
| 12715 | return; |
| 12716 | } else { |
| 12717 | if (failFromIframe++ > 2) { |
| 12718 | failFromIframe = 0; |
| 12719 | debug("Stop as failFromIframe"); |
| 12720 | changeStop(true); |
| 12721 | callback(false, false); |
| 12722 | } else { |
| 12723 | ruleParser.noValidContent(url); |
| 12724 | callback(false, false); |
| 12725 | } |
| 12726 | } |
no test coverage detected