forked from tanner/qotnews
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
2.7 KiB
108 lines
2.7 KiB
(function () { |
|
removeHiddenElements(); |
|
|
|
if (matchDomain("stuff.co.nz")) { |
|
removeSelectors([ |
|
".support-brief-container", |
|
'[class*="donation-in-"]', |
|
".sics-component__sharebar", |
|
".breaking-news-pointer", |
|
".bigbyline-container", |
|
[ |
|
".sics-component__html-injector.sics-component__story__paragraph", |
|
"READ MORE:", |
|
], |
|
]); |
|
} |
|
if (matchDomain("nzherald.co.nz")) { |
|
removeSelectors([ |
|
"[href$='#commenting-widget']", |
|
".related-articles", |
|
".article__print-button", |
|
".share-bar", |
|
".c-suggest-links.read-more-links", |
|
".website-of-year", |
|
".meta-data", |
|
".article__kicker", |
|
".author__image", |
|
]); |
|
} |
|
if (matchDomain(["rnz.co.nz", "radionz.co.nz"])) { |
|
removeSelectors([".c-advert-app", ".c-sub-nav"]); |
|
} |
|
if (matchDomain(["newsroom.co.nz"])) { |
|
removeSelectors([".article_content__section", ".bio"]); |
|
} |
|
if (matchDomain(["newshub.co.nz"])) { |
|
removeSelectors([ |
|
".c-ArticleHeading-authorPicture", |
|
".relatedarticles", |
|
".ArticleAttribution", |
|
'.GlobalFooter' |
|
]); |
|
} |
|
if (matchDomain(["tvnz.co.nz"])) { |
|
removeSelectors([".signup-container container"]); |
|
} |
|
if (matchDomain(["thespinoff.co.nz"])) { |
|
removeSelectors([ |
|
".the-spinoff-club-interruptive", |
|
".bulletin-signup", |
|
".sponsor_post_footer" |
|
]); |
|
} |
|
|
|
function matchDomain(domains) { |
|
const hostname = window.location.hostname; |
|
if (typeof domains === "string") { |
|
domains = [domains]; |
|
} |
|
return domains.some( |
|
(domain) => hostname === domain || hostname.endsWith("." + domain) |
|
); |
|
} |
|
|
|
function removeDOMElement(...elements) { |
|
for (const element of elements) { |
|
if (element) { |
|
element.remove(); |
|
} |
|
} |
|
} |
|
|
|
function pageContains(selector, text) { |
|
const elements = document.querySelectorAll(selector); |
|
return Array.prototype.filter.call(elements, function (element) { |
|
return RegExp(text).test(element.textContent); |
|
}); |
|
} |
|
|
|
function removeHiddenElements() { |
|
window.setTimeout(function () { |
|
const selector = "*:not(script):not(head):not(meta):not(link):not(style)"; |
|
Array.from(document.querySelectorAll(selector)) |
|
.filter((element) => { |
|
const computed = getComputedStyle(element); |
|
const displayNone = computed["display"] === "none"; |
|
const visibilityHidden = computed["visibility"] === "hidden"; |
|
return displayNone || visibilityHidden; |
|
}) |
|
.forEach((element) => element && element.remove()); |
|
}, 500); |
|
} |
|
|
|
function removeSelectors(selectors) { |
|
window.setTimeout(function () { |
|
const elements = selectors.flatMap((s) => { |
|
if (typeof s === "string") { |
|
return Array.from(document.querySelectorAll(s)); |
|
} |
|
if (s && s.constructor.name === "Array") { |
|
return pageContains(...s); |
|
} |
|
return undefined; |
|
}); |
|
removeDOMElement(...elements); |
|
}, 500); |
|
} |
|
})();
|
|
|