bpc/options/htmlviewer.js

156 lines
6.4 KiB
JavaScript
Raw Permalink Normal View History

2025-04-04 22:21:37 +05:30
if (window.location.href === 'https://codebeautify.org/htmlviewer') {
let htmlviewer = document.querySelector('head > link[rel="canonical"][href="https://codebeautify.org/htmlviewer"]');
if (!htmlviewer) {
let ads = 'div.OUTBRAIN, div[id^="taboola-"], div.ad-container, div[class*="-ad-container"], div[class*="_ad-container"], div.arc_ad, div[id^="adv-"], div[class^="ad-"], div[class^="ad_"], div[class^="advert"], aside.ad';
hideDOMStyle(ads, 10);
let cookie_consent = 'div#didomi-host, div#onetrust-consent-sdk, div[id^="sp_message_container"], div#CybotCookiebotDialog, div#usercentrics-root, div.cmp-root-container';
hideDOMStyle(cookie_consent, 11);
let cybot_fade = document.querySelector('div#CybotCookiebotDialogBodyUnderlay');
if (cybot_fade)
cybot_fade.remove();
let html_noscroll = ['cmp-modal-open', 'sp-message-open'];
for (let elem of html_noscroll) {
let noscroll = document.querySelector('html[class~="' + elem + '"]');
if (noscroll)
noscroll.classList.remove(elem);
}
let body_noscroll = ['no-scroll', 'overflowHidden', 'showFirstLayer'];
for (let elem of body_noscroll) {
let noscroll = document.querySelector('body[class~="' + elem + '"]');
if (noscroll)
noscroll.classList.remove(elem);
}
let overflow_hidden = document.querySelector('body[style*="overflow: hidden;"]');
if (overflow_hidden)
overflow_hidden.style.overflow = 'auto';
unhideDataImages()
let hide;
let canonical = document.querySelector('head > link[rel="canonical"][href], link[rel="canonical"][href]');
if (canonical) {
let canonical_url = canonical.href;
let hostname = urlHost(canonical_url);
correctLinks(hostname);
unhideHostImages(hostname);
if (hostname.endsWith('.de')) {
if (matchUrlDomain('augsburger-allgemeine.de', canonical_url)) {
hide = 'div.pt_onlinestory';
} else if (matchUrlDomain('die-tagespost.de', canonical_url)) {
hide = 'section#footer-popup';
} else if (matchUrlDomain('lkz.de', canonical_url)) {
let article_hidden = document.querySelector('div#main');
if (article_hidden)
article_hidden.removeAttribute('id');
hide = 'div.nfy-element-ad, div.error-screen';
} else if (matchUrlDomain('main-echo.de', canonical_url)) {
let hidden_elems = document.querySelectorAll('[hidden]');
for (let elem of hidden_elems)
elem.removeAttribute('hidden');
hide = 'div[id^="traffective-ad-"]';
} else if (matchUrlDomain('mainpost.de', canonical_url)) {
hide = 'div.aa-first-layer';
} else if (matchUrlDomain(['noz.de', 'shz.de'], canonical_url)) {
hide = 'div.msn-ads';
}
} else if (hostname.endsWith('.fi')) {
if (matchUrlDomain(['aamulehti.fi', 'hs.fi', 'is.fi'], canonical_url)) {
hide = 'header, footer, div.article-actions, div.skip-link, article.list, iframe[data-testid="iframe-embed"]';
let image_containers = document.querySelectorAll('div.aspect-ratio-container');
for (let elem of image_containers)
elem.classList.remove('aspect-ratio-container');
}
} else if (hostname.endsWith('.fr')) {
if (matchUrlDomain('humanite.fr', canonical_url)) {
hide = 'tab-bar-component, div#form_don';
}
} else {
if (matchUrlDomain(['businesslive.co.za', 'timeslive.co.za'], canonical_url)) {
hide = 'div#gdpr-overlay';
} else if (matchUrlDomain('ibj.com', canonical_url)) {
hide = 'header#masthead, nav, footer, aside#secondary, div.article-audio, div.article-left-rail, div.promo-container, div.toolbar';
} else if (matchUrlDomain('investorschronicle.co.uk', canonical_url)) {
hide = 'div#specialist__renderer--header';
} else if (matchUrlDomain('nouvelobs.com', canonical_url)) {
hide = 'div.paywall';
} else if (matchUrlDomain('repubblica.it', canonical_url)) {
hide = 'div.cookiewall, div[data-src^="//box.kataweb.it/"]';
} else if (matchUrlDomain('telecompaper.com', canonical_url)) {
hide = 'div[role="dialog"]';
}
}
} else {
if (document.querySelector('head > link[as="image"][imagesrcset^="https://photos.watchmedier.dk/"]')) {// ###_dk_watch_media
hide = 'header, footer, img, svg, section[data-sentry-component="ListCard"]';
}
}
if (hide)
hideDOMStyle(hide);
}
}
function matchDomain(domains, hostname = window.location.hostname) {
let matched_domain = false;
if (typeof domains === 'string')
domains = [domains];
domains.some(domain => (hostname === domain || hostname.endsWith('.' + domain)) && (matched_domain = domain));
return matched_domain;
}
function urlHost(url) {
if (/^http/.test(url)) {
try {
return new URL(url).hostname;
} catch (e) {
console.log(`url not valid: ${url} error: ${e}`);
}
}
return url;
}
function matchUrlDomain(domains, url) {
return matchDomain(domains, urlHost(url));
}
function hideDOMStyle(selector, id = 1) {
let style = document.querySelector('head > style#ext'+ id);
if (!style && document.head) {
let sheet = document.createElement('style');
sheet.id = 'ext' + id;
sheet.innerText = selector + ' {display: none !important;}';
document.head.appendChild(sheet);
}
}
function correctLinks(hostname) {
let links = document.querySelectorAll('a[href^="/"], link[rel="stylesheet"][href^="/"]');
for (let elem of links)
elem.href = elem.href.replace('codebeautify.org', hostname);
}
function unhideHostImages(hostname) {
let hidden_images = document.querySelectorAll('img[src^="/"]');
for (let elem of hidden_images) {
elem.src = elem.src.replace('codebeautify.org', hostname);
elem.removeAttribute('srcset');
let sources = elem.parentNode.querySelectorAll('source[srcset]');
for (let source of sources)
source.removeAttribute('srcset');
}
}
function unhideDataImages() {
let hidden_images = document.querySelectorAll('img[src^="data:image/"]');
for (let elem of hidden_images) {
if (elem.getAttribute('data-src'))
elem.src = elem.getAttribute('data-src');
else if (elem.parentNode) {
let source = elem.parentNode.querySelector('source[data-srcset]');
if (source) {
elem.src = source.getAttribute('data-srcset').split(/[\?\s]/)[0];
}
}
}
}