pytałem na diskordzie ale tam idą dyskusje na głębokie tematy, także spróbujemy tutaj.
#javascript #html #react
Jeszcze na łykopie przed ostatnią aktualizacją napisałem sobie prosty userscript do czarnolistowania. Działał na tej zasadzie że po załadowaniu strony brał predefiniowaną tablicę na przyklad tagów
var tagi=['przegryw','kononowicz'];
function schowaj_taga(item,index) {
let tag=$('div.dupa p a[href="łykop/' + item +'"]' );
tag.remove() }
oczywiście upraszczam, ale efekt tego był taki że usuwane były całe gałęzie drzewa DOM no i było fajnie, dobry przekaz leciał.
W przypadku hejto jak próbuję zrobić to samo z elementem article to jest spoko póki nie dotknę paginacji. Frontent nie "reloaduje" dokumentu tylko usuwa kontekt zmiędzy obecnych <article> i wstawia nowy. Jeśli FE oczekuje 20 elementów article a ja zdążę usunąć 4 z nich to kolejny request o uzupełnienie treści wywali błąd 500.
Zastanawiam sie jak do tego podejść.
To_uff

może zmień im w css display na none zamiast usuwac

To_uff

do tego musisz wylapac w jakis sposob zdarzenie kiedy odswieza sie lista, by resetowac display, gdy odswiezy sie content w article, bo niektóre wpisy będą niepotrzebnie schowane

mike-litoris

@To_uff

css


ja wiem że to edge case ale jeśli schowam element w którym embedowany będzie np jakaś animacja w svg (był swego czasu taki problem na lurkerze) to ta animacja nadal będzie mi żreć CPU. Jasne, spróbuję z inline'owym stylem ale docelowo chcę usuwać kontent a nie tylko go ukrywać.


zdarzenie.


No własnie, też nie wiem jak to rozbroić ;d. dev toolsy w chromie pokazują mi że pod każdy element (przycisk, pole) podpięte jest ze 40 event listenerów. Nienawidzę JSa ;d

mike-litoris

@To_uff update:


no miałeś rację z tymi displayami

var art=document.querySelectorAll('article')

art.forEach(function(item,index){item.style.display="none"});


po czymś takim, po zmianie strony w paginacji kolejna ładuje się już "od zera", nie wywalając błędu.

Teraz pytanie pod jaki event podpiąć tę funkcję odraczającą portal ;d

To_uff

@mike-litoris https://stackoverflow.com/questions/3522090/event-when-window-location-href-changes


może w ten sposób się uda. za kazdym razem zmienia sie url, jak zmienia sie widoczny feed

mike-litoris

@To_uff doceniam wkład, ale tu jest inna kolejność.

klikam w paginację, skrypt myśli, zmienia urla, przewija viewport na samą górę i dopiero podmienia treści w article.

Potrzebny były event który jest dispatchowany PO podmiance wszystkich article'i. Coś jak body.onLoad tylko że customowe dla tego konkretnego skryptu.


@lubieplackijohn @hejto da radę podrzucić jakąś wskazówkę?

lubieplackijohn

@mike-litoris Kurde, pomógłbym, jakbym umiał Ciśnij proszę na dc adminów!

mike-litoris

@lubieplackijohn panie, to są zapracowane ludzie, poprzednie moje pytaine pozostało bez odezwu do teraz, a mama zawsze mówiła "nie wpierdalaj się tam gdzie cię nie chcą guwniarzu.zasrany.zajebany" #pdk

lubieplackijohn

@mike-litoris A w dokumentacji api coś się nie znajdzie?

mike-litoris

@lubieplackijohn nie, bo ja operuję (próbuję xD) na innym poziomie.


API to źródło danych (i sposób na interakcję z częścią serwerową aplikacji), a mój dylemat rozgrywa się w webowym frontendzie.

Ktoś (mędrsi od nas xd) napisał aplikację która komunikując się z API wyświetla w przeglądarce to co właśnie czytasz. Ja chcę "wpiąć" się z dodatkową funkcją która odpali się po tym jak już wszystko się wczyta i wpłynie na wyświetlaną treść.

Magiczny_Magik

Może MutationObserver pomoże?

mike-litoris

ej erjotka @rj45 jesteś tutaj wariacie?

lubieplackijohn

@mike-litoris Niby widzę literki i słowa, ale coś jakoś nie trafia do mnie ich sens i znaczenie xD A mogłem bardziej uważać na tych studiach xD

lubieplackijohn

@mike-litoris Jest na dc w razie czego, czasem nawet odpisuje!

mike-litoris

@Magiczny_Magik ja nie jestem zbyt bystry jeśli o JS chodzi (jakbym w czym innym był bieglejszy xD), cośtam ulepię ale bez reweli i dogłębnego zrozumienia jak coś mogę zrobić lepiej.


picrel: ramka się dodaje (bo wiadomo, bezpośrednio dzialam na dokumencie), ale żadna interakcja z pierwszy artykułem, nie rzuca niczym w konsolę, chyba nie tędy droga.

e33f4250-0b04-4016-8101-cc53c48c2dc5
Magiczny_Magik

@mike-litoris MutationObserver informuje, gdy zmieniają się elementy zawarte w kontenerze, który obserwujesz, czyli musisz patrzeć jeden poziom wyżej - na element, w którym się pokazują artykuły.

kocurio

Zawsze możesz zrobić na pałę i ustawić sobie, żeby skrypt się odpalał np. co sekundę, przy pomocy setInterval - nie jest to za bardzo po bożemu, ale powinno działać A to na tyle drobny skrypt, że nie powinno to jakoś wpłynąć na prędkość działania strony.

mike-litoris

@kocurio wiem wiem, ale nie cierpię takiej guwnorzeźby. to jeden z moich OCD -jak coś robię to ma to być zrobione dobrze, bo parafrazując mema już wpiszę do eksela i tak zostawię.

kocurio

Zobacz może tutaj: https://stackoverflow.com/questions/629671/how-can-i-intercept-xmlhttprequests-from-a-greasemonkey-script - po bożemu pewnie byłoby podpiąć się na requesty, które pobierają nowe posty i jak zwrócą odpowiedź (więc też załadują się na stronie) to wtedy odpalać skrypt. Ale nadal zrobiłbym setInterval, bo jest łatwiej i działa, a jak coś prostego działa to po co się przemęczać

Zaloguj się aby komentować