Akurat nie wyjaśniłem tutaj za dużo, więc dopiszę jeszcze i spadam bo mam dużo do zrobienia.
Żeby namierzyć prosto taką funkcję, która modyfikuje jest masa sposobów.
Od najprostszych, możesz ctrl + f i szukać klasy is-visible
, po bardziej wysublimowane, możesz dobrać się do event listenera danego elementu.
getEventListeners()
, możesz też odnieść się do .click
elementu bez jego wywoływania.
Dalej w tym przypadku event listener jest podpięty pod body, więc na danym elemencie nie znajdziesz tego listenera.
W tym przypadku po kliknięciu na element, jest propagowany w górę event, w drzewie DOM, aż dojdzie do body i tam jest przetwarzane w event listenerze wcześniej w handlerze jquery.
A ten jquery event handler listener jest na początku ładowania strony uruchamiany i najpierw jest odrejestrowany za pomocą .off
i potem ponownie zarejestrowany za pomocą .on
używając jquery, to jest tak stare, że musiałem sobie przypomnieć jak działa.
I masz tak pierwszy element to event.namespace
gdzie namespace pozwala robić kilka click eventów i je jakoś odróżniać, drugi to filtruje elementy, które mają css klasę .spoiler
, a następnie jest funkcja, która ma się wywołać.
Tam jest sprawdzane, czy zawiera spoiler, i czy nie ma już is-visible jak tak to przerywa dalszą propagację eventu do góry i dodaje class is-visible, a dodatkowo na końcu logicznie neguje 1, co daje false.
A tam niżej to sprawdza czy są elementy z klasą .spoiler i nie mają data-spoiler attrybutu to go dodają.
Innym sposobem namierzenia funkcji jest breakpoint na modyfikacji atrybutu, jest to domyślnie zaimplementowane w przeglądarce.
Ale zaawansowani mogą samemu takie coś napisać używając MutableObservera
, mniej więcej jest to w ten sam sposób zaimplementowane.
Często zdarza się, że strona jest zabundlowana, wtedy będziesz miał zminifikowany kod, który jest trudniej czytać i cały w IIFE zbudowany.
Można się do bundlera dostać łatwo, ale trzeba to zrobić za nim uruchomi swoje funkcje, wtedy można go wymodyfikować, później można jedynie z wnętrza funkcji, bo zabezpieczenia przeglądarki na to nie pozwalają, ale można z poza przeglądarki spróbować w ostateczności.