AdguardTeam / AdguardTeam/Scriptlets

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

オープン
#459 コメント 0 件 リアクション 0 件 担当者 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 を短くまとめたダイジェスト。