Greasy Fork is available in English.
把所有检测到的图片替换为蔡徐坤图片,并支持动态加载
< 脚本 更好的蔡徐坤 的反馈
这位同学,还有优化的地步,用数学就能够想到,使用下面这个函数可以支持动态加载的页面:
/*--- waitForKeyElements(): 一个实用函数,用于 Greasemonkey 脚本, 它可以检测和处理AJAX加载的内容。 此外,此函数还支持在使用 `shadowRoot` 的页面上运行。 使用示例: base.waitForKeyElements ( "div.comments" , commentCallbackFunction ); // 页面特定的函数,用于在找到节点时执行我们想要的操作。 function commentCallbackFunction (jNode) { jNode.text ("waitForKeyElements() 更改了这段评论。"); } 重要提示:这个函数需要你的脚本加载了jQuery。 */ function waitForKeyElements(selectorTxt, actionFunction, bWaitOnce, iframeSelector) { function findInShadowRoots(root, selector) { let elements = $(root).find(selector).toArray(); $(root).find('*').each(function () { const shadowRoot = this.shadowRoot; if (shadowRoot) { elements = elements.concat(findInShadowRoots(shadowRoot, selector)); } }); return elements; } var targetElements; if (iframeSelector) { targetElements = $(iframeSelector).contents(); } else { targetElements = $(document); } let allElements = findInShadowRoots(targetElements, selectorTxt); if (allElements.length > 0) { allElements.forEach(function (element) { var jThis = $(element); var alreadyFound = jThis.data('alreadyFound') || false; if (!alreadyFound) { var cancelFound = actionFunction(jThis); if (cancelFound) { return false; } else { jThis.data('alreadyFound', true); } } }); } var controlObj = waitForKeyElements.controlObj || {}; var controlKey = selectorTxt.replace(/[^\w]/g, "_"); var timeControl = controlObj[controlKey]; if (allElements.length > 0 && bWaitOnce && timeControl) { clearInterval(timeControl); delete controlObj[controlKey]; } else { if (!timeControl) { timeControl = setInterval(function () { waitForKeyElements(selectorTxt, actionFunction, bWaitOnce, iframeSelector); }, 50); controlObj[controlKey] = timeControl; } } waitForKeyElements.controlObj = controlObj; }
登录以发布留言。
这位同学,还有优化的地步,用数学就能够想到,使用下面这个函数可以支持动态加载的页面: