Facebookin roskasisällön piilottaminen

Liittynyt
10.12.2022
Viestejä
40
Alla oleva scripti Firefoxin greasemonkeyssa piilottaa sponsoroidun roskan niinkuin pitääkin. Mutta chatgpt:n ehdottama ratkaisu ei pelitä noihin "Seuraa"-juttuihin
1706029970792.png

jonka lähdekoodi on
<span class="x193iq5w xeuugli x13faqbe x1vvkbs x1xmvt09 x6prxxf xvq8zen x1s688f x1fey0fg">Seuraa</span>

En ymmärrä tuosta regexistä mitään, niin en osaa sanoa onko siinä ongelma vai missä. Keksiikös kukaan ratkaisua?

JavaScript:
// ==UserScript==
// @name Hide Facebook Sponsored Feed Units
// @description Hides Facebook feed units that include the text "Sponsoroitu"
// @include https://www.facebook.com/*
// @grant none
// ==/UserScript==

(function() {
  'use strict';
  setInterval(function() {
    var feedUnits = document.querySelectorAll('div[data-pagelet^="FeedUnit_"]');
    for (var i = 0; i < feedUnits.length; i++) {
      if (feedUnits[i].innerHTML.includes("<span>Sponsoroitu</span>")) {
        feedUnits[i].style.display = "none";
      }
    
    
      if (/^<span[^>]*Seuraa<\/span>/s.test(feedUnits[i].innerHTML)) {
            feedUnits[i].style.display = "none";
            }
      
      
    }
  }, 300);
})();
 
Näyttäis puuttuvan span-tagin sulkeva > -merkki tuosta regexpistä. Toimisko tällä?

JavaScript:
/^<span[^>]*>Seuraa<\/span>/s.test(feedUnits[i].innerHTML)
 
Tämä ei ole suoranainen vastaus itse ongelmaan, joka koskee regexpejä. Mutta lähestyisin ongelmaa jollain muulla tavalla kuin regexpeillä (jotka lähtökohtaisesti ovat DevEx anti-pattern).

Esimerkiksi:
JavaScript:
const blacklist = ['Seuraa', 'Sponsoroitu'];
const elements = document.body.querySelectorAll('span');

elements.forEach((element) => {
  const { textContent } = element;

  const hasBlacklistedContent = blacklist.some((bl) => textContent.includes(bl));

  hasBlacklistedContent && element.parentNode.remove();
});
 
Viimeksi muokattu:

Statistiikka

Viestiketjuista
261 814
Viestejä
4 548 110
Jäsenet
74 848
Uusin jäsen
ookooo

Hinta.fi

Back
Ylös Bottom