(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()); }, 1500); } 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); } })();