AdguardTeam / AdguardTeam/Scriptlets

Improve 'trusted-create-element' — allow creation of inner elements for created iframe

未关闭
#459 0 条评论 0 个 reaction 已指派 1 人 已被 @maximtop 认领 在 GitHub 查看
enhancement Priority: P4
主要语言
JavaScript
星标
195
派生
33
PR 合并指标
30 天内没有已合并 PR

描述

`wiki.yjsnpi.nu` removes images if they detect blocker on any subpages having images (ex. `https://wiki.yjsnpi.nu/wiki/%E3%81%9B%E3%81%84%E3%82%84`), and if I understand correctly, they check not only iframes created by `i-mobile.co.jp` script but also their inner elements having `.creative` class with this code (it's under cat-and-mouse game, the code may change):

Code

```
if (document.getElementsByName('noad').length !== 1) {
let detected = false;

if (!detected) {
const iframes = document.querySelectorAll('iframe');
iframes.forEach((iframe) => {
const computedStyle = window.getComputedStyle(iframe, null);
if (computedStyle.display === 'none' || computedStyle.height === '0px') { detected = true; return; }
});
}

if (detected) {
const elms = document.querySelectorAll('span:has(>img), .page-' + RLCONF['wgArticleId'] + ' img, a:has(>img)');
elms.forEach((elm) => { elm.style.height = '0'; });
elms.forEach((elm) => { elm.style.opacity = '0'; });
elms.forEach((elm) => { elm.style.visibility = 'hidden'; })
elms.forEach((elm) => { elm.style.display = 'none'; });
elms.forEach((elm) => { elm.remove(); });
document.querySelector('.mw-page-container, #content').style.backgroundColor = '#fdfdfd';
}

if (!detected) {
new MutationObserver((mutationList, observer) => {
if (document.getElementById('comments-loading') === null) {
let detected = false;
if (document.querySelectorAll('iframe').length === 0) { detected = true; }
const im = document.querySelectorAll('.im');
if (im.length === 0) { detected = true; }
im.forEach((im) => {
const iframes = im.querySelectorAll('iframe');
if (iframes.length === 0) { detected = true; return; }
iframes.forEach((iframe) => {
const contentDocument = iframe.contentDocument;
if (contentDocument.querySelector('.creative') === null) { detected = true; return; }
});
if (detected) { return; }
});
if (detected) {
const elms = document.querySelectorAll('span:has(>img), .page-' + RLCONF['wgArticleId'] + ' img, a:has(>img)');
elms.forEach((elm) => { elm.style.height = '0'; });
elms.forEach((elm) => { elm.style.opacity = '0'; });
elms.forEach((elm) => { elm.style.visibility = 'hidden'; })
elms.forEach((elm) => { elm.style.display = 'none'; });
elms.forEach((elm) => { elm.remove(); });
document.querySelector('.mw-page-container, #content').style.backgroundColor = '#fdfdfd';
}
observer.disconnect();
}
}).observe(document.getElementById('bodyContent'), { attributes: false, childList: true, subtree: true });
}
}
```

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。