', 'text/html');
par_elem = par_html.querySelector('div');
} else if (key === 'legacy-ml') {
par_html = parser.parseFromString(par_key, 'text/html');
par_elem = par_html.querySelector('div');
if (!flourish && par_key.includes('flourish.studio')) {
let flourish_script = document.createElement('script');
flourish_script.setAttribute('src', 'https://public.flourish.studio/resources/embed.js');
if (head)
head.appendChild(flourish_script);
flourish = true;
}
} else {
console.log(key + ': ' + par_key);
par_html = parser.parseFromString('
' + par_key + '
', 'text/html');
par_elem = par_html.querySelector('p');
}
if (!['streamone', 'legacy-ml'].includes(key))
par_elem.setAttribute('class', 'gva-3ee037ad_root gva-3ee037ad_paragraph gva-68d24f7d_none gva-ef7ba41a_system gva-6c6ea21_marginbottom5 gva-6c6ea21_margintop0 gva-21a3e72f_inherit');
div_content.appendChild(par_elem);
}
}
}
}
});
window.setTimeout(function () {
let overlay = document.querySelector('div.cj-root');
removeDOMElement(overlay);
let noscroll = document.querySelector('html.is-dialog-active');
if (noscroll)
noscroll.classList.remove('is-dialog-active');
}, 500); // Delay (in milliseconds)
}
else if (matchDomain('knack.be')) {
let paywall = document.querySelector('.rmgPaywall');
removeDOMElement(paywall);
let hidden_body = document.querySelector('div.rmgDetail-body div');
if (hidden_body) {
hidden_body.removeAttribute('class');
let body_text = hidden_body.innerText.replace(/(?:^|[\w\"\'])(\.|\?|!)(?=[A-Za-zÀ-ÿ\"\']{2,})/gm, "$&\n\n");
hidden_body.innerText = body_text;
let intro_par = document.querySelector('div.rmgDetail-body p');
if (intro_par && intro_par.innerText.length > 200)
removeDOMElement(intro_par);
}
}
else if (matchDomain(["lc.nl", "dvhn.nl"])) {
document.addEventListener('DOMContentLoaded', () => {
if (window.location.href.includes('?'))
window.location.href = window.location.href.split('?')[0];
});
let top_ad = document.querySelector('.top__ad');
let plus = document.querySelector('.plusJustRead');
removeDOMElement(top_ad, plus);
}
else if (matchDomain('noordhollandsdagblad.nl')) {
window.setTimeout(function () {
let close_button = document.querySelector('button[data-testid="button-close"]');
if (close_button)
close_button.click();
let premium = document.querySelector('div.common-components-plus_pluslabel--container');
if (premium) {
let hidden_article = document.querySelector('div[data-auth-body="article"]');
if (hidden_article)
hidden_article.removeAttribute('style');
let paywall = document.querySelector('div[data-auth-root="paywall"]');
removeDOMElement(paywall);
let auth_body = document.querySelector('div[data-auth-body="article"]');
if (auth_body) {
let auth_body_par_count = auth_body.querySelectorAll('p');
if (auth_body_par_count.length < 2) {
let url = window.location.href;
let html = document.documentElement.outerHTML;
let split1 = html.split('window["__PRELOADED_STATE_GRAPH__')[1].split(/=(.+)/)[1];
let split2 = split1.split('')[0].trim();
let split3 = split2.split('"body":')[1];
let state = split3.split('},"')[0] + '}';
try {
let data = JSON.parse(state);
let article = data.json;
auth_body.innerHTML = '';
let par_html,
par_dom,
par_elem,
par_div,
par_key;
let parser = new DOMParser();
for (let par of article) {
for (let key in par) {
par_dom = document.createElement('p');
par_elem = '';
par_key = par[key];
if (key === 'subhead') {
par_elem = document.createElement('strong');
par_elem.innerText = par_key;
} else if (key === 'twitter' || key === 'instagram') {
par_elem = document.createElement('a');
Object.assign(par_elem, {
href: par_key,
innerText: par_key,
target: '_blank'
});
} else if (key === 'youtube') {
par_elem = document.createElement('iframe');
Object.assign(par_elem, {
src: 'https://www.youtube.com/embed/' + par_key.id,
id: 'ytplayer',
type: 'text/html',
width: 640,
height: 360,
frameborder: 0
});
} else if (key === 'streamone') {
par_elem = document.createElement('iframe');
Object.assign(par_elem, {
src: 'https://content.tmgvideo.nl/embed/item=' + par_key.id,
type: 'text/html',
width: 640,
height: 360,
frameborder: 0
});
} else if (key === 'image') {
par_elem = document.createElement('div');
let par_img = document.createElement('img');
par_img.src = par_key.url;
par_elem.appendChild(par_img)
par_div = document.createElement('div');
par_div.innerText = par[key].caption ? par[key].caption : '';
par_div.innerText += par[key].credit ? '\n' + par[key].credit : '';
par_elem.appendChild(par_div);
} else {
par_html = parser.parseFromString('
' + par_key + '
', 'text/html');
par_elem = par_html.querySelector('div');
}
if (par_elem)
par_dom.appendChild(par_elem);
auth_body.appendChild(par_dom);
}
}
} catch (err) {
console.warn('unable to parse noordhollands dagblad text');
console.warn(err);
}
}
}
}
}, 500); // Delay (in milliseconds)
}
else if (matchDomain('nrc.nl')) {
window.setTimeout(function () {
let mijnnrc_overlay = document.querySelector('#mijnnrc__modal__overlay');
let subscribe_bar = document.querySelector('.header__subscribe-bar');
removeDOMElement(mijnnrc_overlay, subscribe_bar);
let paywall = document.querySelector('.has-paywall');
if (paywall)
paywall.classList.remove('has-paywall');
let paywall_overlay = document.querySelector('.has-paywall-overlay');
if (paywall_overlay)
paywall_overlay.classList.remove('has-paywall-overlay');
}, 100);
}
else if (matchDomain(["parool.nl", "trouw.nl", "volkskrant.nl", "humo.be", "demorgen.be"])) {
let banners = document.querySelectorAll('div[data-temptation-position^="PAGE_"], div[class^="ad--"]');
let paywall = document.querySelectorAll('[data-temptation-position^="ARTICLE_"]');
removeDOMElement(...banners, ...paywall);
}
else if (matchDomain('telegraaf.nl')) {
if (window.location.href.startsWith('https://www.telegraaf.nl/error?ref=/')) {
window.setTimeout(function () {
window.location.href = window.location.href.split('&')[0].replace('error?ref=/', '');
}, 500);
}
let refresh = document.querySelector('div[id="content"] > meta[http-equiv="refresh"]');
if (refresh) {
window.setTimeout(function () {
window.location.reload(true);
}, 500);
}
let article_wrapper = document.querySelector('.ArticlePageWrapper__uid');
let spotx_banner = document.querySelector('.ArticleBodyBlocks__inlineArticleSpotXBanner');
let paywall = document.querySelector('.PopupBackdrop__block');
removeDOMElement(spotx_banner, paywall);
let premium = document.querySelector('.PremiumLabelWithLine__body');
let article_id = article_wrapper ? article_wrapper.innerText : '123';
let article_body_done = document.querySelector('#articleBody' + article_id);
if (premium && !article_body_done) {
let article_body_old = document.querySelector('[id^="articleBody"]');
removeDOMElement(article_body_old);
let json = document.querySelector('script[type="application/ld+json"][data-react-helmet="true"]');
if (json) {
var json_text = JSON.parse(json.text).articleBody;
let article_body = document.querySelector('section.TextArticlePage__bodyText');
if (article_body) {
let div_main = document.createElement('div');
div_main.setAttribute('id', 'articleBody' + article_id);
let div_elem = document.createElement('div');
div_elem.setAttribute('data-element', 'articleBodyBlocks');
let text_array = json_text.split('\n\n');
text_array.forEach(p_text => {
let p_div = document.createElement('p');
p_div.setAttribute('class', 'ArticleBodyBlocks__paragraph ArticleBodyBlocks__paragraph--nieuws');
p_div.innerText = p_text;
div_elem.appendChild(p_div);
});
div_main.appendChild(div_elem);
article_body.appendChild(div_main);
}
}
}
}
else
csDone = true;
} else if (window.location.hostname.match(/\.(ie|uk)$/) || matchDomain(['irishtimes.com', 'theathletic.com'])) {//united kingdom/ireland
if (matchDomain('irishtimes.com')) {
document.addEventListener('DOMContentLoaded', () => {
let amphtml = document.querySelector('link[rel="amphtml"]');
let stub_article_msg = document.querySelector('div.stub-article-msg');
let url = window.location.href;
if ((url.includes('mode=sample') || stub_article_msg) && amphtml)
window.location.href = amphtml.href;
let amp_ads = document.querySelectorAll('.amp-ad-container');
removeDOMElement(...amp_ads);
});
}
else if (matchDomain('prospectmagazine.co.uk')) {
let url = window.location.href;
document.addEventListener('DOMContentLoaded', () => {
let paywall = document.querySelector('div.paywall_overlay_blend, div.paywall');
if (paywall) {
removeDOMElement(paywall);
let url_cache = 'https://webcache.googleusercontent.com/search?q=cache:' + url.split('//')[1];
replaceDomElementExt(url_cache, true, false, 'main', 'Failed to load from Google webcache: ');
}
});
}
else if (matchDomain('spectator.co.uk')) {
let premium = document.querySelector('.HardPayWallContainer-module__overlay');
removeDOMElement(premium);
window.setTimeout(function () {
if (premium && window.location.href.includes('/www.spectator.co.uk/')) {
window.location.href = window.location.href + '/amp';
}
}, 500); // Delay (in milliseconds)
}
else if (matchDomain('telegraph.co.uk')) {
let url = window.location.href;
if (new URL(url).pathname.endsWith('/amp/')) {
let paywall = document.querySelector('.premium-paywall');
if (paywall) {
let truncated_content = document.querySelector('.truncated-content');
removeDOMElement(paywall, truncated_content);
let subscr_section = document.querySelector('.notAccessibleForFree');
if (subscr_section)
subscr_section.removeAttribute('amp-access-hide');
}
}
}
else if (matchDomain('the-tls.co.uk')) {
let paywall = document.querySelector('.tls-subscriptions-banner__closed-skin');
removeDOMElement(paywall);
}
else if (matchDomain(['theathletic.com', 'theathletic.co.uk'])) {
if (!window.location.href.includes('/?amp')) {
let paywall = document.querySelector('div#paywall-container');
let amphtml = document.querySelector('link[rel="amphtml"]');
if (paywall && amphtml) {
removeDOMElement(paywall);
window.location.href = amphtml.href;
}
} else {
let subscr_sections = document.querySelectorAll('[subscriptions-section="content"]');
for (let subscr_section of subscr_sections)
subscr_section.removeAttribute('subscriptions-section');
let subscr_actions = document.querySelectorAll('[subscriptions-actions]');
removeDOMElement(...subscr_actions);
}
}
else if (matchDomain('thetimes.co.uk')) {
let block = document.querySelector('.subscription-block');
let ad_block = document.getElementById('ad-article-inline')
let ad_header = document.getElementById('sticky-ad-header')
removeDOMElement(block, ad_block, ad_header);
}
else if (!matchDomain(['belfasttelegraph.co.uk', 'independent.ie']))
csDone = true;
} else if (window.location.hostname.match(/\.(br|cl|pe)$/) || matchDomain(['elmercurio.com', 'latercera.com', 'lasegunda.com'])) {//south america
if (matchDomain(['elcomercio.pe', 'gestion.pe'])) {
let paywall = document.querySelector('.story-content__nota-premium');
if (paywall) {
paywall.classList.remove('story-content__nota-premium');
paywall.removeAttribute('style');
}
}
else if (matchDomain('elmercurio.com')) {
window.setTimeout(function () {
let elem_hidden = document.querySelectorAll('[style="visibility:hidden"]');
for (let elem of elem_hidden)
elem.removeAttribute('style');
let cont_articlelight = document.querySelector('div.cont_articlelight:not([style])');
if (cont_articlelight)
cont_articlelight.setAttribute('style', 'height: 100% !important; width: 90% !important');
let page_pdf_content = document.querySelector('div.page_pdf_content');
let close_html = document.querySelector('div.close_html');
removeDOMElement(page_pdf_content, close_html)
}, 1000); // Delay (in milliseconds)
}
else if (matchDomain('estadao.com.br')) {
let paywall = document.getElementById('paywall-wrapper-iframe-estadao');
removeDOMElement(paywall);
}
else if (matchDomain('folha.uol.com.br')) {
let signup = document.querySelector('.c-top-signup');
removeDOMElement(signup);
}
else if (matchDomain('latercera.com')) {
let subscr_banner = document.querySelector('.empty');
removeDOMElement(subscr_banner);
}
else if (matchDomain('lasegunda.com')) {
let url = window.location.href;
if (url.includes('digital.lasegunda.com/mobile')) {
let lessreadmore = document.querySelectorAll('article.lessreadmore');
for (let article of lessreadmore)
article.classList.remove('lessreadmore');
let bt_readmore = document.querySelectorAll('div[id*="bt_readmore_"]');
removeDOMElement(...bt_readmore);
}
}
else if (matchDomain(["mercuriovalpo.cl", "estrellavalpo.cl"])) {
let content = document.querySelector('div.content');
if (content)
content.setAttribute('id', 'content_new');
let modal_wrapper = document.querySelector('div.modal-wrapper');
removeDOMElement(modal_wrapper);
let body_modal = document.querySelector('body.modal-open');
if (body_modal)
body_modal.classList.remove('modal-open');
}
else
csDone = true;
} else {//other (like com/org & not at/be/br/ch/cl/de/fr/es/ie/nl/pe/pt/uk))
if (matchDomain('adweek.com')) {
let url = window.location.href;
let body_single = document.querySelector('body.single');
let amphtml = document.querySelector('link[rel="amphtml"]');
if (body_single && amphtml) {
body_single.classList.remove('single');
window.location.href = amphtml.href;
}
}
else if (matchDomain('americanbanker.com')) {
let inline_gate = document.querySelector('.inline-gate');
if (inline_gate) {
inline_gate.classList.remove('inline-gate');
let inline_gated = document.querySelectorAll('.inline-gated');
for (let elem of inline_gated)
elem.classList.remove('inline-gated');
}
}
else if (matchDomain('americanaffairsjournal.org')) {
let paywall_bar = document.querySelector('.paywall-notification-bar-wrapper');
removeDOMElement(paywall_bar);
}
else if (matchDomain('asia.nikkei.com')) {
let popup = document.querySelector('.pw-widget--popup');
removeDOMElement(popup);
}
else if (matchDomain('asiatimes.com')) {
let paywall = document.querySelector('div[amp-access="NOT story.ordered"]');
removeDOMElement(paywall);
let div_hidden = document.querySelector('div[amp-access="story.ordered"][amp-access-hide]');
if (div_hidden)
div_hidden.removeAttribute('amp-access-hide');
let adverts = document.querySelectorAll('amp-ad, amp-consent, amp-embed');
removeDOMElement(...adverts);
}
else if (matchDomain('barrons.com')) {
document.addEventListener('DOMContentLoaded', () => {
let body_continuous = document.querySelector('body.is-continuous');
let snippet = document.querySelector('meta[content="snippet"]');
if (body_continuous && snippet) {
window.location.href = window.location.href.replace('barrons.com', 'barrons.com/amp');
}
});
if (!window.location.href.includes('barrons.com/amp/')) {
var href = '';
let signin_links = document.querySelectorAll('a.primary-button--link');
for (let signin_link of signin_links) {
href = signin_link.href;
if (href.includes('target=')) {
href = href.split('target')[1].split('%3F')[0];
href = href.replace('=', '').replace('%3A', ':').replace(/%2F/g, '/');
signin_link.href = href;
signin_link.text = 'Click';
}
}
} else {
let wsj_ads = document.querySelectorAll('.wsj-ad');
removeDOMElement(...wsj_ads);
}
}
else if (matchDomain('bloomberg.com')) {
document.addEventListener('DOMContentLoaded', () => {
let fence = document.querySelector('.fence-body');
if (fence) {
fence.classList.remove('fence-body');
}
});
let body_overlay = document.querySelector('body[data-paywall-overlay-status="show"]');
if (body_overlay)
body_overlay.removeAttribute('data-paywall-overlay-status');
let noscroll = document.querySelector('body[class*="noScroll"]');
if (noscroll)
removeClassesByPrefix(noscroll, 'noScroll');
let paywall_overlay = document.querySelector('div#graphics-paywall-overlay');
let banner = document.getElementById('paywall-banner');
removeDOMElement(banner, paywall_overlay);
}
else if (matchDomain('bloombergquint.com')) {
let articlesLeftModal = document.querySelector('.paywall-meter-module__story-paywall-container__1UgCE');
let paywall = document.getElementById('paywallDmp');
removeDOMElement(articlesLeftModal, paywall);
}
else if (matchDomain('business-standard.com')) {
document.addEventListener('DOMContentLoaded', () => {
let skip_button = document.querySelector('a.btn_skip');
if (skip_button)
skip_button.click();
let paywall = document.querySelector('div.sbc_panel');
if (paywall) {
removeDOMElement(paywall.parentElement);
let scripts = document.querySelectorAll('script[type="application/ld+json"]');
let json;
for (let script of scripts) {
if (script.innerText.includes('articleBody'))
json = script;
}
if (json) {
let json_text = JSON.parse(json.text.replace(/(\r\n|\n|\r|\t)/gm, ''))[0].articleBody;
json_text = parseHtmlEntities(json_text);
json_text = json_text.replace(/(?:^|[\w\"\'\’])(\.|\?|!)(?=[A-Z\"\”\“\‘\’\'][A-Za-zÀ-ÿ\"\”\“\‘\’\']{1,})/gm, "$&") + '';
let parser = new DOMParser();
let html = parser.parseFromString('
' + json_text + '
', 'text/html');
let article = html.querySelector('div');
if (article) {
let p_content = document.querySelector('span.p-content.paywall');
if (p_content) {
let old_pars = p_content.querySelectorAll('p');
for (let old_par of old_pars) {
if (!old_par.querySelector('img'))
removeDOMElement(old_par);
}
p_content.appendChild(article);
}
}
}
}
});
}
else if (matchDomain('caixinglobal.com')) {
window.setTimeout(function () {
let pay_tips = document.querySelectorAll('.cons-pay-tip');
for (let pay_tip of pay_tips)
pay_tip.removeAttribute('style');
let appContent = document.getElementById('appContent');
if (appContent) {
let hidden_pars = document.querySelectorAll('p:not([style="display:block;"])');
for (let hidden_par of hidden_pars)
hidden_par.setAttribute('style', 'display:block;');
}
let app_exclusive_tip = document.querySelector('.app-exclusive-tip');
removeDOMElement(app_exclusive_tip);
}, 500); // Delay (in milliseconds)
}
else if (matchDomain(ca_torstar_domains)) {
window.setTimeout(function () {
let meter_banner = document.querySelector('.c-article-meter-banner');
let ads = document.querySelectorAll('.seo-media-query, .c-googleadslot');
removeDOMElement(meter_banner, ...ads);
let end_of_article = document.querySelector('#end-of-article');
if (end_of_article)
end_of_article.setAttribute('style', 'display:none;');
let rightrail = document.querySelector('.c-article-body__rightrail');
if (rightrail)
rightrail.setAttribute('style', 'display:none;');
}, 500);
}
else if (matchDomain('cen.acs.org')) {
document.addEventListener('DOMContentLoaded', () => {
let meteredBar = document.querySelector('.meteredBar');
removeDOMElement(meteredBar);
});
}
else if (matchDomain('discovermagazine.com')) {
window.setTimeout(function () {
let mammoth = document.querySelector('.iXVGnF');
if (mammoth)
window.location.reload();
let banner = document.querySelector('div.hWOjDZ, div.qa7yll-1');
if (banner)
banner.setAttribute('style', 'display:none;');
}, 1000); // Delay (in milliseconds)
}
else if (matchDomain('economictimes.indiatimes.com')) {
let paywall = document.querySelector('section.prime_paywall');
if (paywall) {
removeDOMElement(paywall);
let content = document.querySelector('div.content1, div.artText');
let full_text = document.querySelector('div.paywall.p1');
if (content && full_text)
content.innerText = full_text.innerText;
}
}
else if (matchDomain('economist.com')) {
document.addEventListener('DOMContentLoaded', () => {
let subscribe = document.querySelector('.subscription-proposition');
let wrapper = document.getElementById('bottom-page-wrapper');
removeDOMElement(subscribe, wrapper);
let adverts = document.querySelectorAll('div.advert');
for (let advert of adverts)
advert.setAttribute('style', 'display:none');
window.setTimeout(function () {
let paywall = document.querySelector('.layout-article-regwall'); ;
if (paywall) {
window.location.reload(true);
}
}, 600); // Delay (in milliseconds)
let p_articles = document.querySelectorAll('p.article__body-text');
var href;
for (let p_article of p_articles) {
let e_anchors = document.querySelectorAll('a');
href = '';
for (let e_anchor of e_anchors) {
if (e_anchor.href) {
href = e_anchor.href;
} else {
e_anchor.href = href;
}
}
}
});
}
else if (matchDomain('entrepreneur.com')) {
let promo = document.querySelector('.paywall-promo');
if (promo) {
removeDOMElement(promo);
let gate_check = document.querySelector('.gate-check');
if (gate_check)
gate_check.removeAttribute('class');
let hidden_images = document.querySelectorAll('img.lazy[src*="blur"][data-src]');
for (let hidden_image of hidden_images)
hidden_image.setAttribute('src', hidden_image.getAttribute('data-src'));
}
}
else if (matchDomain('firstthings.com')) {
let paywall = document.querySelector('.paywall');
removeDOMElement(paywall);
}
else if (matchDomain('foreignaffairs.com')) {
let paywall = document.querySelector('.paywall');
let loading_indicator = document.querySelector('.loading-indicator');
let msg_bottom = document.querySelector('.messages--container--bottom');
removeDOMElement(paywall, loading_indicator, msg_bottom);
let article_dropcap = document.querySelectorAll('.article-dropcap');
for (let elem of article_dropcap)
elem.classList.add('loaded');
let hidden_images = document.querySelectorAll('img[src^="data:image/"]');
for (let hidden_image of hidden_images) {
var data_src = hidden_image.getAttribute('data-src');
if (data_src) {
hidden_image.setAttribute('src', data_src);
hidden_image.removeAttribute('class');
}
}
let img_list = document.querySelectorAll('.magazine-list-article img');
for (let img_elem of img_list)
img_elem.setAttribute('class', 'mb-4');
if (window.location.href.includes('/interviews/')) {
let img_header = document.querySelector('.interview-header > div');
if (img_header) {
let img_src = img_header.getAttribute('data-src');
let img_elem = document.createElement('img');
img_elem.src = img_src;
img_header.appendChild(img_elem);
}
}
}
else if (matchDomain('foreignpolicy.com')) {
let placeholder = document.querySelector('div.loading-placeholder-smaller');
removeDOMElement(placeholder);
let sub_content = document.querySelector('div.sub_content:not(style)');
if (sub_content)
sub_content.setAttribute('style', 'display:block !important;');
}
else if (matchDomain('ft.com')) {
let cookie_banner = document.querySelector('.o-banner__outer');
let ribbon = document.querySelector('.js-article-ribbon');
let ads = document.querySelector('.o-ads');
removeDOMElement(cookie_banner, ribbon, ads);
}
else if (matchDomain('griffithreview.com')) {
let body_single = document.querySelector('body.single');
if (body_single)
body_single.classList.remove('single');
let subscribe = document.querySelector('div.call-to-action');
removeDOMElement(subscribe);
}
else if (matchDomain('harpers.org')) {
let overlay = document.querySelector('div[id^="pum-"]');
removeDOMElement(overlay);
let entry_content = document.querySelectorAll('.entry-content');
for (let elem of entry_content)
elem.setAttribute('style', 'display: block !important');
}
else if (matchDomain('hbr.org')) {
let popup = document.querySelector('.persistent-banner');
removeDOMElement(popup);
}
else if (matchDomain('historyextra.com')) {
let article_masked = document.querySelector('.template-article__masked');
if (article_masked) {
let extra_pars = document.querySelectorAll('div.template-article__masked > p');
removeDOMElement(...extra_pars);
article_masked.classList.remove('template-article__masked');
}
let ad_banner = document.querySelector('.ad-banner-container');
removeDOMElement(ad_banner);
}
else if (matchDomain('inkl.com')) {
document.addEventListener('DOMContentLoaded', () => {
let menu_btn = document.querySelector('div.left-buttons-container button.menu-btn');
if (!menu_btn) {
let article_container = document.querySelector('div.article-content-container');
if (article_container)
article_container.setAttribute('style', 'overflow: visible; max-height: none;');
let gradient_container = document.querySelector('div.gradient-container');
if (gradient_container)
gradient_container.setAttribute('style', 'height:auto;');
}
let what_is_inkl = document.querySelector('.what-is-inkl-container');
let signup = document.querySelector('.article-signup-container');
removeDOMElement(what_is_inkl, signup);
});
let dismiss_button = document.querySelector('div.dismiss-button-container button.btn');
if (dismiss_button)
dismiss_button.click();
let shared_banner = document.querySelector('div.shared-article-inline-banner');
removeDOMElement(shared_banner);
let dive_deeper_summary_bodies = document.querySelectorAll('div.dive-deeper-container div.summary-body');
if (dive_deeper_summary_bodies) {
for (let summary_body of dive_deeper_summary_bodies) {
if (!summary_body.querySelector('a')) {
var ng_click = summary_body.getAttribute('ng-click').replace("showArticle('", '').replace("')", '');
var weblink = document.createElement('a');
weblink.text = 'open';
weblink.href = 'https://www.inkl.com/news/' + ng_click;
summary_body.appendChild(weblink);
}
}
}
}
else if (matchDomain('jpost.com')) {
let premium_banners = document.querySelectorAll('.hide-for-premium, #hiddenPremiumForm, #hiddenLink');
removeDOMElement(...premium_banners);
}
else if (matchDomain('magazine.atavist.com')) {
let bottom_notification = document.querySelector('div.bottom-notification');
let overlay = document.querySelector('div.notification-overlay');
removeDOMElement(bottom_notification, overlay);
let paywall = document.querySelector('body.paywall-notification-visible');
if (paywall)
paywall.classList.remove('paywall-notification-visible');
}
else if (matchDomain('marketwatch.com')) {
let premium = document.querySelector('html.is-paywall');
let url = window.location.href;
if (!url.includes('/amp/')) {
if (premium) {
premium.classList.remove('is-paywall');
window.location.href = url.replace('.marketwatch.com/', '.marketwatch.com/amp/');
}
} else {
let meter = document.querySelector('div.meter');
let container_sponsored = document.querySelector('div.container--sponsored');
let amp_ads = document.querySelectorAll('.display-ad');
removeDOMElement(meter, container_sponsored, ...amp_ads);
}
let ads = document.querySelectorAll('div.element--ad, div.j-ad');
removeDOMElement(...ads);
}
else if (matchDomain('mexiconewsdaily.com')) {
window.setTimeout(function () {
let popup = document.querySelector('div.pigeon-widget-prompt');
let cpro_overlay = document.querySelector('.cpro-overlay');
removeDOMElement(popup, cpro_overlay);
}, 500); // Delay (in milliseconds)
}
else if (matchDomain('nation.africa')) {
let datawall_content = document.querySelector('.datawall-content');
if (datawall_content)
datawall_content.classList.remove('datawall-content');
let div_hidden = document.querySelectorAll('[data="datawall-content"]');
for (let elem of div_hidden)
elem.removeAttribute('style');
let hidden_images = document.querySelectorAll('img.lazy-img:not([src])[data-srcset]');
for (let hidden_image of hidden_images) {
hidden_image.classList.remove('lazy-img');
hidden_image.setAttribute('src', hidden_image.getAttribute('data-srcset').split(',')[1].split(' ')[0]);
}
}
else if (matchDomain('nationalgeographic.com')) {
function natgeo_func(node) {
removeDOMElement(node);
let body = document.querySelector('body[class]');
if (body) {
body.removeAttribute('class');
body.removeAttribute('style');
}
}
waitDOMElement('div[id^="fittPortal"]', 'DIV', natgeo_func, false);
csDone = true;
}
else if (matchDomain('nationalreview.com')) {
document.addEventListener('DOMContentLoaded', () => {
let url = window.location.href;
let article_truncated = document.querySelector('div#article-content-truncate-wrap');
if (article_truncated && !url.includes('/amp/')) {
article_truncated.removeAttribute('id');
if (url.includes('?'))
window.location.href = url.replace('?', 'amp/?');
else
window.location.href = url + 'amp';
}
let adverts = document.querySelectorAll('.ad-unit--center');
removeDOMElement(...adverts);
});
}
else if (matchDomain('newleftreview.org')) {
let url = window.location.href;
let paywall = document.querySelector('div.promo-wrapper');
if (paywall) {
removeDOMElement(paywall);
let url_cache = 'https://webcache.googleusercontent.com/search?q=cache:' + url.split('//')[1];
replaceDomElementExt(url_cache, true, false, 'div.article-page', 'Failed to load from Google webcache: ');
}
}
else if (matchDomain('newstatesman.com')) {
let tns_modal_wrapper = document.querySelector('.tns-modal-wrapper');
removeDOMElement(tns_modal_wrapper);
}
else if (matchDomain('newyorker.com')) {
let paywall_bar = document.querySelector('.paywall-bar');
removeDOMElement(paywall_bar);
let invisible_assets = document.querySelectorAll('.responsive-asset--invisible');
for (let asset_invisible of invisible_assets)
asset_invisible.classList.remove('responsive-asset--invisible');
let overlays = document.querySelectorAll('.aspect-ratio--overlay-container, .asset-embed__asset-container');
let noscript,
html;
let parser = new DOMParser();
for (let overlay of overlays) {
noscript = overlay.querySelector('noscript');
if (noscript) {
html = parser.parseFromString(noscript.innerHTML, 'text/html');
overlay.appendChild(html.querySelector('img'));
removeDOMElement(noscript);
}
}
}
else if (matchDomain('nzherald.co.nz')) {
let article_content = document.querySelector('.article__content');
if (article_content) {
let article_offer = document.querySelector('.article-offer');
if (article_offer) {
removeDOMElement(article_offer);
let css_selector = article_content.querySelectorAll('p[style]')[1].getAttribute('class');
let hidden_not_pars = article_content.querySelectorAll('.' + css_selector + ':not(p)');
for (let hidden_not_par of hidden_not_pars) {
hidden_not_par.classList.remove(css_selector);
hidden_not_par.removeAttribute('style');
}
let hidden_pars = article_content.querySelectorAll('p.' + css_selector);
let par_html,
par_dom;
let parser = new DOMParser();
for (let hidden_par of hidden_pars) {
let par_html = parser.parseFromString('
' + hidden_par.innerHTML + '
', 'text/html');
let par_dom = par_html.querySelector('div');
article_content.insertBefore(par_dom, hidden_par);
}
let first_span = document.querySelector('p > span');
if (first_span)
first_span.removeAttribute('class');
}
}
let premium_toaster = document.querySelector('#premium-toaster');
removeDOMElement(premium_toaster);
}
else if (matchDomain('nybooks.com')) {
let paywall_article = document.querySelector('.paywall-article');
if (paywall_article)
paywall_article.classList.remove('paywall-article');
let banner = document.querySelector('div.toast-cta');
removeDOMElement(banner);
}
else if (matchDomain('nyteknik.se')) {
let locked_article = document.querySelector('div.locked-article');
if (locked_article)
locked_article.classList.remove('locked-article');
let hidden_images = document.querySelectorAll('img[src=""][data-proxy-image]');
for (let hidden_image of hidden_images)
hidden_image.setAttribute('src', hidden_image.getAttribute('data-proxy-image').replace('_320', '_640'));
}
else if (matchDomain('nytimes.com')) {
function nyt_main() {
navigator.storage.estimate = undefined;
webkitRequestFileSystem = function () {};
}
insert_script(nyt_main);
let preview_button = document.querySelector('.css-3s1ce0');
if (preview_button)
preview_button.click();
if (window.location.hostname === 'cooking.nytimes.com') {
let no_scroll = document.querySelectorAll('.nytc---modal-window---noScroll');
for (let elem of no_scroll)
elem.classList.remove('nytc---modal-window---noScroll');
let login = document.querySelector('.nytc---modal-window---isShown');
if (login) {
let close_button = login.querySelector('span[aria-label="close"]');
if (!close_button)
login.classList.remove('nytc---modal-window---isShown');
}
} else {
waitDOMElement('div[data-testid="inline-message"]', 'DIV', removeDOMElement, false);
waitDOMElement('div.expanded-dock', 'DIV', removeDOMElement, false);
csDone = true;
}
}
else if (matchDomain('qz.com')) {
window.setTimeout(function () {
let url = window.location.href;
if (url.includes('utm_source='))
window.location.href = url.split('?')[0];
}, 500); // Delay (in milliseconds)
}
else if (matchDomain('republic.ru')) {
let paywall = document.querySelector('.paywall-section');
removeDOMElement(paywall);
}
else if (matchDomain('scmp.com') && window.location.href.includes('/amp.')) {
let div_hidden_all = document.querySelectorAll('div.article-body[amp-access][amp-access-hide]');
for (let div_hidden of div_hidden_all)
div_hidden.removeAttribute('amp-access-hide');
let default_meters = document.querySelectorAll('div.default-meter, div#archive-article-meter');
let adverts = document.querySelectorAll('amp-ad, div.ad-banner, div.advert-fly-carpet-container, div.inline-advert');
removeDOMElement(...default_meters, ...adverts);
}
else if (matchDomain('scribd.com')) {
let blurred_pages = document.querySelectorAll('.blurred_page');
for (let blurred_page of blurred_pages) {
blurred_page.classList.remove('blurred_page');
}
let portal = document.querySelector('.between_page_portal_root');
let page_module = document.querySelector('.between_page_module');
let promo = document.querySelector('.auto__doc_page_webpack_doc_page_body_static_promo_study');
let ad = document.querySelector('.auto__explain_scribd_v2_advertisement');
removeDOMElement(portal, page_module, promo, ad);
}
else if (matchDomain('seekingalpha.com')) {
let url = window.location.href;
let locked = document.querySelector('div[data-test-id="post-locked-banner"]');
if (locked && !url.includes('/amp/')) {
window.setTimeout(function () {
window.location.href = url.replace('seekingalpha.com/', 'seekingalpha.com/amp/');
}, 500); // Delay (in milliseconds)
} else if (url.includes('/amp/')) {
let div_hidden_all = document.querySelectorAll('[amp-access*="premium_access OR"]');
for (let div_hidden of div_hidden_all)
div_hidden.removeAttribute('amp-access-hide');
let paywall = document.querySelector('[class*="paywall-container"]');
if (paywall)
paywall.setAttribute('style', 'display:none;');
let adverts = document.querySelectorAll('.ad-wrap');
removeDOMElement(...adverts);
}
}
else if (matchDomain('slader.com')) {
window.setTimeout(function () {
let paywall = document.querySelector('.Paywall');
let paywall_footer = document.querySelector('.Paywall__footer-counter');
removeDOMElement(paywall, paywall_footer);
let blur = document.querySelector('section.Paywall__blur');
if (blur)
blur.classList.remove('Paywall__blur');
}, 500); // Delay (in milliseconds)
}
else if (matchDomain('slate.com')) {
let slate_roadblock = document.querySelector('.slate-roadblock');
let ads = document.querySelectorAll('section[class*="-ad"]');
removeDOMElement(slate_roadblock, ...ads);
}
else if (matchDomain('sofrep.com')) {
let banners = document.querySelectorAll('#scrollerCTA, #botCta');
removeDOMElement(...banners);
}
else if (matchDomain('startribune.com')) {
document.addEventListener('DOMContentLoaded', () => {
let react_modal_portal = document.querySelectorAll('div.ReactModalPortal');
removeDOMElement(...react_modal_portal);
let body_modal = document.querySelector('body.ReactModal__Body--open');
if (body_modal)
body_modal.classList.remove('ReactModal__Body--open');
});
}
else if (matchDomain('stocknews.com')) {
let hideme = document.querySelector('div#hideme');
removeDOMElement(hideme);
let blurmes = document.querySelectorAll('div[id^="blurme"]');
for (let i = 0; i < blurmes.length; i++)
blurmes[i].setAttribute('id', 'blurmenot' + i);
}
else if (matchDomain('stratfor.com')) {
let banner = document.querySelector('.free-cta-container');
removeDOMElement(banner);
let hidden_images = document.querySelectorAll('img[src^="data:image/gif"][data-src]');
for (let hidden_image of hidden_images)
hidden_image.setAttribute('src', hidden_image.getAttribute('data-src'));
}
else if (matchDomain('techinasia.com')) {
let paywall = document.querySelector('.paywall-content');
if (paywall) {
paywall.classList.remove('paywall-content');
let url = window.location.href;
let url_xhr = url.replace('.com/', '.com/wp-json/techinasia/2.0/posts/');
fetch(url_xhr)
.then(response => {
if (response.ok) {
response.json().then(json => {
let json_text = json.posts[0].content;
let content = document.querySelector('div.content');
if (json_text && content) {
let parser = new DOMParser();
let doc = parser.parseFromString('
' + json_text + '
', 'text/html');
let content_new = doc.querySelector('div.content');
content.parentNode.replaceChild(content_new, content);
}
});
}
});
}
let splash_subscribe = document.querySelector('.splash-subscribe');
let paywall_hard = document.querySelector('.paywall-hard');
removeDOMElement(splash_subscribe, paywall_hard);
}
else if (matchDomain('technologyreview.com')) {
window.setTimeout(function () {
let body_obscured = document.querySelector('body[class*="body__obscureContent"]');
if (body_obscured)
removeClassesByPrefix(body_obscured, 'body__obscureContent');
let overlay = document.querySelector('div[class*="overlayFooter__wrapper"]');
if (overlay)
overlay.setAttribute('style', 'display:none');
let content_body_hidden = document.querySelector('div[class*="contentBody__contentHidden"]');
if (content_body_hidden)
removeClassesByPrefix(content_body_hidden, 'contentBody__contentHidden');
let content_body_overlay = document.querySelector('div[class*="contentBody__overlay"]');
if (content_body_overlay)
content_body_overlay.removeAttribute('class');
}, 500);
}
else if (matchDomain('the-american-interest.com')) {
let counter = document.getElementById('article-counter');
removeDOMElement(counter);
}
else if (matchDomain('theatlantic.com')) {
let banner = document.querySelector('.c-nudge__container,.c-non-metered-nudge');
removeDOMElement(banner);
}
else if (matchDomain('thediplomat.com')) {
let preview = document.querySelector('.dpl-preview');
if (preview)
preview.classList.remove('dpl-preview');
}
else if (matchDomain('theglobeandmail.com')) {
let article_body_subscribed = document.querySelector('.c-article-body--subscribed');
if (article_body_subscribed) {
article_body_subscribed.removeAttribute('class');
csDone = true;
}
function tgam_main() {
document.addEventListener('bpc_event', function (e) {
if (window.tgam)
window.tgam.keytar.subscriberPaywallEnabled = false;
})
}
insert_script(tgam_main);
document.dispatchEvent(new CustomEvent('bpc_event', {}));
}
else if (matchDomain(['thehindu.com', 'thehindubusinessline.com'])) {
if (!localStorage.geo) {
localStorage.setItem("geo", '{"v":{"clientTcpRtt":20,"longitude":"' + makeRandomNumber(2) + '.' + makeRandomNumber(5) + '","httpProtocol":"HTTP/2","tlsCipher":"AEAD-AES128-GCM-SHA256","continent":"EU","asn":1234,"clientAcceptEncoding":"gzip, deflate,br","country":"UK","isEUCountry":"1","tlsClientAuth":{"certIssuerDNLegacy":"","certIssuerDN":"","certIssuerDNRFC2253":"","certSubjectDNLegacy":"","certVerified":"NONE","certNotAfter":"","certSubjectDN":"","certFingerprintSHA1":"","certNotBefore":"","certSerial":"","certPresented":"0","certSubjectDNRFC2253":""},"tlsVersion":"TLSv1.3","colo":"DUS","timezone":"Europe/London","edgeRequestKeepAliveStatus":1,"requestPriority":"weight=220;exclusive=1","botManagement":{"staticResource":false,"verifiedBot":false,"score":99},"clientTrustScore":99,"postalCode":"' + makeRandomNumber(4) + '","regionCode":"QR","region":"County","city":"London","latitude":"' + makeRandomNumber(2) + '.' + makeRandomNumber(5) + '"},"e":' + makeRandomNumber(13) + '}');
}
let counter = document.querySelector('#test');
removeDOMElement(counter);
function hindu_main() {
document.addEventListener('bpc_event', function (e) {
if (window) {
window.Adblock = false;
window.isNonSubcribed = false;
}
})
}
insert_script(hindu_main);
document.dispatchEvent(new CustomEvent('bpc_event', {}));
}
else if (matchDomain('thelogic.co')) {
let article_subscribe = document.querySelector('.article-subscribe');
removeDOMElement(article_subscribe);
}
else if (matchDomain('thenewatlantis.com')) {
let article_gated = document.querySelector('.article-gated');
if (article_gated)
article_gated.classList.remove('article-gated');
}
else if (matchDomain('thepointmag.com')) {
let overlay = document.querySelectorAll('div.overlay, div#tpopup-');
for (let elem of overlay)
removeDOMElement(elem);
}
else if (matchDomain('time.com')) {
let body = document.querySelector('body');
if (body)
body.setAttribute('style', 'position:relative !important;');
}
else if (matchDomain('timeshighereducation.com')) {
let paywall_cta = document.querySelector('div.paywall-cta');
if (paywall_cta) {
paywall_cta.removeAttribute('style');
let hidden_divs = document.querySelectorAll('div[style="display: none;"]');
for (let hidden_div of hidden_divs)
hidden_div.removeAttribute('style');
let paywall_fade = document.querySelector('div.paywall-fade');
if (paywall_fade)
paywall_fade.classList.remove('paywall-fade');
}
}
else if (matchDomain('usatoday.com')) {
let roadblock = document.querySelector('.roadblock-container');
if (roadblock) {
removeDOMElement(roadblock);
article_next = document.querySelector('article.next-in-depth-story > div.article-inner');
if (article_next) {
let url = article_next.getAttribute('data-url');
let weblink = document.createElement('a');
weblink.href = url;
weblink.innerText = 'open next in-depth story';
article_next.appendChild(weblink);
}
}
}
else if (matchDomain('velonews.com')) {
let paywall = document.querySelector('div.o-membership-overlay');
if (paywall) {
let js_gated = document.querySelector('div.js-gated');
if (js_gated)
js_gated.classList.remove('js-gated');
removeDOMElement(paywall);
}
}
else if (matchDomain('venturebeat.com')) {
window.setTimeout(function () {
let paywall = document.querySelector('div.paywall');
if (paywall)
paywall.classList.remove('paywall');
}, 500); // Delay (in milliseconds)
}
else if (matchDomain('washingtonpost.com')) {
let leaderboard = document.querySelector('#leaderboard-wrapper');
let adverts = document.querySelectorAll('div[data-qa="article-body-ad"]');
removeDOMElement(leaderboard, ...adverts);
if (location.href.includes('/gdpr-consent/')) {
let free_button = document.querySelector('.gdpr-consent-container .continue-btn.button.free');
if (free_button)
free_button.click();
window.setTimeout(function () {
let gdprcheckbox = document.querySelector('.gdpr-consent-container .consent-page:not(.hide) #agree');
if (gdprcheckbox) {
gdprcheckbox.checked = true;
gdprcheckbox.dispatchEvent(new Event('change'));
document.querySelector('.gdpr-consent-container .consent-page:not(.hide) .continue-btn.button.accept-consent').click();
}
}, 300); // Delay (in milliseconds)
} else if (adverts || leaderboard)
csDone = true;
}
else if (matchDomain('wsj.com') && !matchDomain('cn.wsj.com')) {
if (location.href.includes('/articles/')) {
let close_button = document.querySelector('div.close-btn[role="button"]');
if (close_button)
close_button.click();
}
let wsj_ads = document.querySelectorAll('div.wsj-ad');
removeDOMElement(...wsj_ads);
document.addEventListener('DOMContentLoaded', () => {
let url = window.location.href;
let snippet = document.querySelector('.snippet-promotion');
let wsj_pro = document.querySelector('meta[name="page.site"][content="wsjpro"]');
if (snippet || wsj_pro) {
window.location.href = url.replace('wsj.com', 'wsj.com/amp');
}
});
}
else if ((domain = matchDomain(usa_mcc_domains)) || document.querySelector('script[src^="https://media.mcclatchyinteractive.com/"]') || window.location.href.match(/\/\/amp\..+\.com\/(.+\/)?article(\d){8,}\.html/)) {
if (!domain)
domain = document.domain.replace(/(account|amp)\./, '');
let url = window.location.href;
if (url.includes('account.' + domain + '/paywall/')) {
window.setTimeout(function () {
window.location.href = 'https://amp.' + domain + '/article' + url.split('resume=')[1].split('#')[0] + '.html';
}, 500); // Delay (in milliseconds)
} else if (url.includes('amp.' + domain + '/')) {
let subscr_sections = document.querySelectorAll('div[subscriptions-section="content"]');
for (let subscr_section of subscr_sections) {
subscr_section.removeAttribute('subscriptions-section');
}
let subscr_tag = document.querySelector('div#subscriber-exclusive-tag');
let amp_players = document.querySelectorAll('amp-connatix-player');
removeDOMElement(subscr_tag, ...amp_players);
}
let premium_svgs = document.querySelectorAll('h3 > a > svg');
let premium_link;
for (let premium_svg of premium_svgs) {
premium_link = premium_svg.parentElement;
if (premium_link.href.includes('www.'))
premium_link.href = premium_link.href.replace('www.', 'amp.');
}
}
else
csDone = true;
}
if (csDone) {
addDivBpcDone();
ext_api.runtime.sendMessage({csDone: true});
}
} // end div_bpc_done
// General Functions
function removeDOMElement(...elements) {
for (let element of elements) {
if (element)
element.remove();
}
}
function waitDOMElement(selector, tagName = '', callback, multiple = false) {
new window.MutationObserver(function (mutations) {
for (let mutation of mutations) {
for (let node of mutation.addedNodes) {
if (!tagName || (node.tagName === tagName)) {
if (node.matches(selector)) {
callback(node);
if (!multiple)
this.disconnect();
}
}
}
}
}).observe(document, {
subtree: true,
childList: true
});
}
function addDivBpcDone() {
let div_bpc_new = document.createElement('div');
div_bpc_new.setAttribute('id', 'bpc_done');
div_bpc_new.setAttribute('style', 'display: none;');
let insertAfter = (document.body || document.head || document.documentElement);
insertAfter.appendChild(div_bpc_new);
}
function matchDomain(domains, hostname) {
var matched_domain = false;
if (!hostname)
hostname = window.location.hostname;
if (typeof domains === 'string')
domains = [domains];
domains.some(domain => (hostname === domain || hostname.endsWith('.' + domain)) && (matched_domain = domain));
return matched_domain;
}
function replaceDomElementExt(url, proxy, base64, selector, text_fail = '') {
let proxyurl = proxy ? 'https://bpc2-cors-anywhere.herokuapp.com/' : '';
fetch(proxyurl + url, {headers: {"Content-Type": "text/plain", "X-Requested-With": "XMLHttpRequest"} })
.then(response => {
let article = document.querySelector(selector);
if (response.ok) {
response.text().then(html => {
if (base64) {
html = decode_utf8(atob(html));
selector = 'body';
}
let parser = new DOMParser();
let doc = parser.parseFromString(html, 'text/html');
let article_new = doc.querySelector(selector);
if (article_new) {
if (article)
article.parentNode.replaceChild(article_new, article);
}
});
} else if (text_fail) {
if (article) {
let text_fail_div = document.createElement('div');
text_fail_div.appendChild(document.createTextNode(text_fail));
if (proxy) {
let a_link = document.createElement('a');
a_link.innerText = url;
a_link.href = url;
a_link.target = '_blank';
text_fail_div.appendChild(a_link);
}
article.insertBefore(text_fail_div, article.firstChild);
}
}
});
}
function removeClassesByPrefix(el, prefix) {
let el_classes = el.classList;
for (let el_class of el_classes) {
if (el_class.startsWith(prefix))
el_classes.remove(el_class);
}
}
function cookieExists(name) {
return document.cookie.split(';').some(function (item) {
return item.trim().indexOf(name + '=') === 0
})
}
function setCookie(name, value, domain, path, days) {
var max_age = days * 24 * 60 * 60;
document.cookie = name + "=" + (value || "") + "; domain=" + domain + "; path=" + path + "; max-age=" + max_age;
}
function insert_script(func, insertAfterDom) {
let bpc_script = document.querySelector('script#bpc_script');
if (!bpc_script) {
let script = document.createElement('script');
script.setAttribute('id', 'bpc_script');
script.appendChild(document.createTextNode('(' + func + ')();'));
let insertAfter = insertAfterDom ? insertAfterDom : (document.body || document.head || document.documentElement);
insertAfter.appendChild(script);
}
}
function genHexString(len) {
let output = '';
for (let i = 0; i < len; i++)
output += (Math.floor(Math.random() * 16)).toString(16);
return output;
}
function makeRandomNumber(len) {
let result = '';
var characters = '123456789';
var charactersLength = characters.length;
for (var i = 0; i < len; i++)
result += characters.charAt(Math.floor(Math.random() * charactersLength));
return result;
}
function pageContains(selector, text) {
let elements = document.querySelectorAll(selector);
return Array.prototype.filter.call(elements, function (element) {
return RegExp(text).test(element.textContent);
});
}
function parseHtmlEntities(encodedString) {
var translate_re = /&(nbsp|amp|quot|lt|gt|deg|hellip|laquo|raquo|ldquo|rdquo|lsquo|rsquo|mdash);/g;
var translate = {"nbsp": " ", "amp": "&", "quot": "\"", "lt": "<", "gt": ">", "deg": "°", "hellip": "…",
"laquo": "«", "raquo": "»", "ldquo": "“", "rdquo": "”", "lsquo": "‘", "rsquo": "’", "mdash": "—"};
return encodedString.replace(translate_re, function (match, entity) {
return translate[entity];
}).replace(/(\d+);/gi, function (match, numStr) {
var num = parseInt(numStr, 10);
return String.fromCharCode(num);
});
}
function encode_utf8(str) {
return unescape(encodeURIComponent(str));
}
function decode_utf8(str) {
return decodeURIComponent(escape(str));
}