Wpis z mikrobloga

Czy jest tu jakiś Mirek, który bawił się w userscripty? Interesuje mnie możliwość zatrzymania zagnieżdżonego skryptu na stronie w przeglądarkach Chrome i podobnych (Blink).

Sprawa nie jest prosta, bo skrypt bazuje na IIFE, także nie dość, że jest zagnieżdżony w HTMLu (inline) to jeszcze wywołuje się natychmiastowo w anonimowej funkcji (nie ma dostępu do wewnętrznych metod i większości zmiennych).

Chrome nie obsługuje zdarzeń typu "beforescriptexecute" i wycofał obsługę zdarzeń "beforeload". Dlatego nie szukam porad z neta, ale raczej doświadczenia, bo sprawa wydaje się ciężka do przeskoczenia.

Na FF wszystko śmiga.

#programowanie #javascript
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@szymy: Jeśli robisz to dla chrome polecam napisanie prostego extension. Inaczej będziesz się musiał bawić w marne rozwiązania typu blokowanie js i podmiana. Dlatego polecam to pierwsze.
  • Odpowiedz
@szymy: widzę że próbujesz znaleźć rozwiązanie problemu ( ͡° ͜ʖ ͡°)
Z jednej strony, cieszy mnie to - z drugiej jak znowu pomyślę o tych straconych godzinach ( ͡° ʖ̯ ͡°)
  • Odpowiedz
@Ginden: Niestety nie pomaga.

@regis3: Pytanie jest tylko czy za pomocą rozszerzenia uda mi się zablokować skrypt tego typu? Chcę zablokować tylko 1 skrypt i zamiast niego wstrzyknąć swój.

@tatarysh: Z czystej ciekawości staram się to rozwiązać. ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@szymy: jeśli przez pojęcie skrypt masz na myśli pojedynczy plik js to tak. Możesz w extensionie zrobic reroute na swój zmodyfikowany skrypt albo w ogóle go przefiltrować.
  • Odpowiedz
@regis3: Mam na myśli pojedynczy skrypt zagnieżdżony w kodzie HTML. Chciałbym go zablokować/usunąć/podmienić na swój przed wykonaniem. Opcja z gołym userscriptem wydaje mi się, że nie przejdzie, ale widzę, że Chrome ma coś takiego jak Content Security Policy i można zablokować wszystkie skrypty zagnieżdżone. Nie wiem tylko czy to zadziała i niestety przy okazji wpłynie na pozostałe skrypty.
  • Odpowiedz