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

Function forceIframe

Pagetual/pagetual.user.js:13253–13427  ·  view source on GitHub ↗
(url, callback)

Source from the content-addressed store, hash-verified

13251
13252 var curForceIframe;
13253 function forceIframe(url, callback) {
13254 url = url.indexOf('=') == -1 ? url.replace(/#[^#]*/,"") : url;
13255 let curIframe = document.createElement('iframe'), iframeDoc, pageElement = null, inAction = true;
13256 let loadedHandler = () => {
13257 let getPageEle = () => {
13258 if (ruleParser.curSiteRule.smart) {
13259 return null;
13260 } else {
13261 if (!pageElement || pageElement.length === 0 || !pageElement[0].offsetParent) {
13262 pageElement = ruleParser.getPageElement(iframeDoc, curIframe.contentWindow);
13263 }
13264 return pageElement;
13265 }
13266 };
13267 resizeIframe(curIframe, iframeDoc, getPageEle());
13268 let loaded = curIframe.getAttribute("loaded");
13269 if (loaded == "true") {
13270 return;
13271 }
13272 curIframe.setAttribute("loaded", "true");
13273 let getIframe = () => {
13274 return curIframe;
13275 };
13276 let getFrameDoc = () => {
13277 return iframeDoc;
13278 };
13279 ruleParser.insertPage(iframeDoc, [], url, ele => {
13280 callback(curIframe, loaded == "refresh");
13281 inAction = false;
13282 }, true);
13283 if (!loaded) {
13284 resizePool.push([getPageEle, getIframe, getFrameDoc]);
13285 }
13286 };
13287 let checkIframeTimer = setInterval(() => {
13288 if (!curIframe.parentNode) {
13289 clearInterval(checkIframeTimer);
13290 return curIframe.getAttribute("loaded") == "true" || callback(false);
13291 }
13292 }, 500);
13293 let code = ruleParser.curSiteRule.iframeInit;
13294 if (code) {
13295 let checkReady = setInterval(() => {
13296 try {
13297 iframeDoc = curIframe.contentDocument || (curIframe.contentWindow && curIframe.contentWindow.document);
13298 } catch(e) {
13299 clearInterval(checkReady);
13300 return;
13301 }
13302 if (iframeDoc) {
13303 clearInterval(checkReady);
13304 try {
13305 Function('win', 'iframe', '"use strict";' + code)(curIframe.contentWindow, curIframe);
13306 } catch(e) {
13307 debug(e);
13308 }
13309 }
13310 }, 50);

Callers 1

nextPageFunction · 0.85

Calls 7

debugFunction · 0.85
runWaitMethod · 0.80
getInsertMethod · 0.80
insertElementMethod · 0.80
setHTMLFunction · 0.70
checkIframeFunction · 0.70
getBodyFunction · 0.70

Tested by

no test coverage detected