MozillaPL.org - polskie centrum Mozilli

Główne menu:

[skryptozakładki] jak uzyskać cykliczne wykonywanie kodu ?

Projektowanie aplikacji i rozszerzeń opartych na technologiach Mozilla Foundation: XUL, JavaScript, XPCOM, XBL i innych

Moderator: Pomocy?!

[skryptozakładki] jak uzyskać cykliczne wykonywanie kodu ?

Postautor: Abdul » 13 lutego 2009, 18:23

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6

To mój pierwszy pot tutaj, więc się przywitam: Dzień dobry !

Napisałem skryptozakładkę, która wykonuje funkcję znajdującą się w kodzie strony (wysłanie formularza), lub wykonuje history.back(), jeśli to konieczne.
Działa świetnie tyle, że muszę klikać skryptozakładkę co kilka sekund, aby uzyskać pożądany efekt. Chciałbym aby po jednym kliknięciu kod wykonywał się co 3 sekundy. Nie wiem czy da się coś takiego zrobić.
Abdul
 
Posty: 3
Z nami od: 13 lutego 2009, 14:58

Postautor: Grzegorz » 13 lutego 2009, 21:44

Przeglądarka: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.10 (intrepid) Firefox/3.0.6

Pewnie tak, najsensowniejszej odpowiedzi udzieliłby Ci Mirek [PL], ale dawno go na forum nie było... Powinieneś się zainteresować Greasemonkey i przenieść zawartość skryptozakładki do user.js, który będzie wstrzykiwał odpowiedni kod w stronę.
GnuPG. Podpisuję własne wypowiedzi. | TrueCrypt. Ufam kryptografii, nie państwu. | Tor. Dbam o swoją prywatność. | OTR. Moje rozmowy nie są podsłuchiwane.

Załóż konto lub kup domenę WWW z linka polecającego: http://www.hekko.pl/?ref=34295
Grzegorz
Moderator
 
Posty: 7494
Z nami od: 15 kwietnia 2007, 12:33

Postautor: Abdul » 14 lutego 2009, 01:04

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6

Greasemonkey tak, to może być odpowiedź, w bazie skryptów nawet jest już taki, który robi (prawie) to co mój, tylko jakoś nie mogę go uruchomić, jutro jeszcze popróbuje, teraz spać. Dzięki.
--- edit ---
działa ^^
Ostatnio zmieniony 14 lutego 2009, 12:14 przez Abdul, łącznie zmieniany 1 raz
Abdul
 
Posty: 3
Z nami od: 13 lutego 2009, 14:58

Postautor: Grzegorz » 14 lutego 2009, 11:27

Przeglądarka: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009020911 Ubuntu/8.10 (intrepid) Firefox/3.0.6

To wrzuć skrypt do bazy lub tutaj na forum. Być może inni skorzystają.
GnuPG. Podpisuję własne wypowiedzi. | TrueCrypt. Ufam kryptografii, nie państwu. | Tor. Dbam o swoją prywatność. | OTR. Moje rozmowy nie są podsłuchiwane.

Załóż konto lub kup domenę WWW z linka polecającego: http://www.hekko.pl/?ref=34295
Grzegorz
Moderator
 
Posty: 7494
Z nami od: 15 kwietnia 2007, 12:33

Postautor: Abdul » 14 lutego 2009, 12:21

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6

W bazie znalazłem: http://userscripts.org/scripts/show/39805, mój przy tym wlecze się jak żółw. Autor ominął zabezpieczenie strony przed zbyt szybkim klikaniem odpowiedzi. (przez noc 600 000 ziaren ~12.5 kg, a przeglądarka zminimalizowana =.=) A to co ja napisałem hmm na zachodzie powiedzieliby pewnie "nice try".
Abdul
 
Posty: 3
Z nami od: 13 lutego 2009, 14:58

Re: [skryptozakładki] jak uzyskać cykliczne wykonywanie kodu ?

Postautor: Mirek » 01 października 2009, 15:20

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)

Trochę rzeczywiście mnie tu nie było, ale w międzyczasie nie próżnowałem i eksperymentowałem nawet ze skryptozakładkami w asemblerze - tylko Ci z Mozilli są niemożliwi - co chwile łatają Firefoxa i moje shellcode'y przestają działać ;-)
A tak serio wracając do tematu (trochę chyba już przeterminowanego) - najprościej wg mnie by było zrobić tak - skryptozakładka powinna tworzyć nowe okno i tam powinien siedzieć skrypt korzystający z setInterval(), ew. setTimeout(), który by robił odpowiednie rzeczy z rodzicem - do którego się można dostać przez: window.opener...
Ponieważ przykłady najlepiej przemawiają, to na stronie z googlami odpal coś takiego - i obserwuj (co 3 sekundy), co się dzieje w polu wyszukiwania googli:
Kod: Zaznacz cały
javascript: wnd=window.open('','aaa'); with(wnd){document.write('<html><body><script language="javascript">setInterval("window.opener.document.forms.f.q.value+=\'x\'", 3000);</script></body></html>'); document.close();}

Inna możliwość to cykliczne wysyłanie formularza przy pomocy AJAXa - wtedy nie trzeba dodatkowego okna - tylko nie we wszystkich przypadkach tak się da - głównie zależy co, oprócz wysłania formularza, chcesz robić.
window.opener.history.go(-1) też działa do cofnięcia rodzica.

Pozdrawiam,
Mirek
Mirek
Moderator
 
Posty: 2099
Z nami od: 09 sierpnia 2007, 20:37

Odp: [skryptozakładki] jak uzyskać cykliczne wykonywanie kod

Postautor: martaposty1 » 02 lipca 2013, 13:08

Przeglądarka: Mozilla/5.0 (Windows NT 5.1; rv:22.0) Gecko/20100101 Firefox/22.0

Odświeżam temat, bo napotkał mnie ten sam problem. Jakim sposobem mogę uzyskać zapętlone wykonywanie kodu?
martaposty1
 
Posty: 4
Z nami od: 02 lipca 2013, 09:35

Odp: [skryptozakładki] jak uzyskać cykliczne wykonywanie kod

Postautor: Mirek » 31 lipca 2013, 18:44

Przeglądarka: Mozilla/5.0 (Windows NT 6.0; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0

Musisz dokładniej opisać o co chodzi. Ale wg mnie w tym temacie są już wszystkie najważniejsze odpowiedzi - tj. Greasemonkey, wywoływanie kodu co jakiś czas za pomocą setInterval(), setTimeout() (+ ewentualnie wspomniany wyżej pomysł z dodatkowym oknem/kartą, jeśli to ma być skryptozakładka działająca nawet po odświeżeniu/zmianie strony - tylko z zachowaniem Same Origin Policy)
No że chyba dosłownie chodzi o to, jak
uzyskać zapętlone wykonywanie kodu

Wtedy odsyłam do właściwie dowolnego poradnika na temat Javascript - przeważnie zaraz na początku uczą o pętlach for, while, do..while.
Mirek
Moderator
 
Posty: 2099
Z nami od: 09 sierpnia 2007, 20:37


Wróć do Programowanie z użyciem technologii Mozilli

Kto jest online

Zarejestrowani użytkownicy: Alexa [Bot], Bing [Bot], Google [Bot]

Przejdź do powiązanej strony

Nawigacja:

Stopka: