Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript]Greasemonkey + Jquery?
ShadowD
post 22.11.2009, 16:31:10
Post #1





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

Ostrzeżenie: (0%)
-----


Mam pytanie, czy może ktoś zna sposób w jaki mógł bym korzystać z Jquery w grasemonkey?

Znalazłem coś takiego:
  1. // Add jQuery
  2. var GM_JQ = document.createElement('script');
  3. GM_JQ.src = 'http://jquery.com/src/jquery-latest.js';
  4. GM_JQ.type = 'text/javascript';
  5. document.getElementsByTagName('head')[0].appendChild(GM_JQ);
  6.  
  7. // Check if jQuery's loaded
  8. function GM_wait() {
  9. if(typeof unsafeWindow.jQuery == 'undefined') { window.setTimeout(GM_wait,100); }
  10. else { $ = unsafeWindow.jQuery; letsJQuery(); }
  11. }
  12. GM_wait();
  13.  
  14. // All your GM code must be inside this function
  15. function letsJQuery() {
  16. alert($); // check if the dollar (jquery) function works
  17.  
  18. }


TYlko nie wiem czemu cały czas wyskakuje alert o zmiennej treści jak by z częściami jakiejś funkcji...

Ten post edytował ShadowD 22.11.2009, 16:37:16


--------------------
Mój blog - o wszystkim i niczym ale zazwyczaj związane z informatyką! ;-)
Githube

Usługi spawalnicze i monterskie | Park linowy Lublin i Okunince
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
webdice
post 22.11.2009, 16:34:27
Post #2


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Wklej źródło jQuery do pliku z Twoim skryptem.
Go to the top of the page
+Quote Post
zegarek84
post 22.11.2009, 17:55:04
Post #3





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


Cytat(webdice @ 22.11.2009, 16:34:27 ) *
Wklej źródło jQuery do pliku z Twoim skryptem.
bez przesady winksmiley.jpg
http://wiki.greasespot.net/Metadata_block#.40require


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
ShadowD
post 5.12.2009, 14:02:47
Post #4





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

Ostrzeżenie: (0%)
-----


O nie zauważyłem odpowiedzi, faktycznie o wiele wygodniej będzie korzystać z osobnego pliku jquery.

Mam kod:
  1. // ==UserScript==
  2. // @name Hello jQuery
  3. // @namespace <a href="http://www.example.com/examples" target="_blank">http://www.example.com/examples</a>
  4. // @description jQuery test script
  5. // @include *
  6. // @require <a href="http://code.jquery.com/jquery-latest.js" target="_blank">http://code.jquery.com/jquery-latest.js</a>
  7. // ==/UserScript==
  8.  
  9. $(document).ready(function() {
  10. $("a").click(function() {
  11. alert('Hello world!');
  12. });
  13. });


Nie działa, nie mam pojęcia dlaczego...


--------------------
Mój blog - o wszystkim i niczym ale zazwyczaj związane z informatyką! ;-)
Githube

Usługi spawalnicze i monterskie | Park linowy Lublin i Okunince
Go to the top of the page
+Quote Post
zegarek84
post 6.12.2009, 00:21:42
Post #5





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


wszystko ładnie pięknie tylko źle używasz // @require - w linku który podałem może był mało dokładny przykład bo z adresem względnym (jednak akurat to właściwe miejsce gdyż tam był opis tej matadaty) - jednak już wiedziałeś co i jak to wystarczyło luknąć albo w manual greseamonkey albo do skryptów na useurscripts albo w google...
tutaj masz na wiki greseamonkey przykład załączania i jquery i biblioteki yahoo:
jQuery in Greasemonkey scripts using the metadata key @require

Ten post edytował zegarek84 6.12.2009, 00:22:45


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
ShadowD
post 6.12.2009, 02:06:29
Post #6





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

Ostrzeżenie: (0%)
-----


Dostałem od Ciebie linka, za co jestem wdzięczny. Przeglądając dokumentację z pierwszego linka znalazłem:


jQuery require
// ==UserScript==
// @name Hello jQuery
// @namespace http://www.example.com/examples
// @description jQuery test script
// @include *
// @require http://code.jquery.com/jquery-latest.js
// ==/UserScript==

$(document).ready(function() {
$("a").click(function() {
alert('Hello world!');
});
});

To chyba powinno działać, ale nie stety nie działa...

Zaraz popatrzę jeszcze w ostatnim linku, ale z tego co pobieżnie się zorientowałem to powinno działać.


--------------------
Mój blog - o wszystkim i niczym ale zazwyczaj związane z informatyką! ;-)
Githube

Usługi spawalnicze i monterskie | Park linowy Lublin i Okunince
Go to the top of the page
+Quote Post
zegarek84
post 6.12.2009, 18:22:12
Post #7





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


Cytat(Metadata_Block_@require)
This metadata block key property may be used to cache a local or remote script into the current user script at installation time. Greasemonkey will not redownload these external dependencies every time the script is executed on a web page specified by @include

pogróbiłem najważniejszy fragment - nie mam czasu testować wszystkich przypadków i popełnianych przez Was błędów - ale podejrzewam, że ten skrypt Ty już miałeś zainstalowany i tylko zmodyfikowałeś źródła licząc, że biblioteka sama się doinstaluje - patrz wyżej cytat z manuala winksmiley.jpg

pisałem już kilka skryptów pod greseamonkey i to działa winksmiley.jpg


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
ShadowD
post 6.12.2009, 20:33:22
Post #8





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

Ostrzeżenie: (0%)
-----


Rozumiem że chodzi o cache...

A więc, klikam na nowy skrypt, wybieram strony na jakich ma być uruchomiony (*) i klikam OK.
Edycja pliku i dodaje require i krótki wręcz banalny kod, a oto rezultat:

[HTML] pobierz, plaintext
  1. // ==UserScript==
  2. // @name test
  3. // @namespace D:\Firefox\gm\qwdad.js
  4. // @include *
  5. // @require <a href="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js" target="_blank">http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js</a>
  6. // ==/UserScript==
  7. {:content:}#x28;document).ready(function()
  8. {
  9. alert('Hello world!');
  10. });
[HTML] pobierz, plaintext

Nie działa, pisząc samego alerta, bez redy() działa, wniosek ->> jquery nie działa...

Bogatszy o nowe doświadczenia próbuję z wersją lokalną. Najpierw wklejam pliki w katalog gm w katalogu ff i dla pewności, a raczej szczerze wiedzę, że powinienem go wkleić do katalogu coś jak: ~Firefox\Profiles\...\gm_scripts\ gdzie również wendruje kopia plików. Konfiguracja od początku (takla sama) plus zmiana w require na nazwę pliku, próbowałem /nazwa.roz jak i bez /.

Wynik jak zwykle. Próba poszukania czegoś w sieci (raz kolejny), znalazłem masę plików niby działających kopiowałem je i sprawdzałem wszystko kończyło się tak jak zawsze. ;\

Nie wiem co robię nie tak, jak zauważyłeś lub i nie staram się jakoś rozwiązać ten problem jednak mi nie idzie, prosił bym o kolejną naprowadzenie na właściwą drogę... ;]

EDIT:
Da się doładować 2 pliki do jednego skryptu?

Ten post edytował ShadowD 6.12.2009, 20:59:25


--------------------
Mój blog - o wszystkim i niczym ale zazwyczaj związane z informatyką! ;-)
Githube

Usługi spawalnicze i monterskie | Park linowy Lublin i Okunince
Go to the top of the page
+Quote Post
zegarek84
post 6.12.2009, 22:52:22
Post #9





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


Cytat(ShadowD @ 6.12.2009, 20:33:22 ) *
Rozumiem że chodzi o cache...
nie zupełnie o cache - odinstaluj wszystkie skrypty tego typu - kliknij "usuń" - wyłącz potem mozille i włącz....

Cytat(ShadowD @ 6.12.2009, 20:33:22 ) *
A więc, klikam na nowy skrypt, wybieram strony na jakich ma być uruchomiony (*) i klikam OK.
Edycja pliku i dodaje require i krótki wręcz banalny kod...


właśnie o tym w jednym z postów pisałem, że zapewne tak robisz - a jak pisze przy require w manualu dodatkowy skrypt instaluje się/ściąga się tylko raz przy instalacji skryptu

nie wiem na ile znasz angielski na dokumentacje (nie wiem czemu ale takie teksty i jak ktoś mówi to rozumiem dosyć dobrze - dużo gożej jakbym ja miał mówić - prawie ni w zącool.gif - ale w manualu o namespace też trochu inaczej pisze - podaje się adres internetowy tego skryptu czy to localhst - nie wiem czy można tak jak u Ciebie w kodzie ;p...


najlepiej zrób tak - tak jak pisałem odinstaluj te skrypty co tam masz niepotrzebne i o podobnych próbach (mogą wchodzić w konflikty)... zapisz na dysku plik o takiej nazwie JAKAS_NAZWA.user.js a jego zawartość to w zasadzie kod z Twojego pierwszego postu (narazie z cytatu ;p):

Kod
// ==UserScript==
// @name          jQueryPlay
// @namespace     http://www.example.com/jQueryPlay/
// @description   Plays around with jQuery. Simply appends " more text." to string in the element with id sometext.
// @include       http://forum.php.pl*
// @require       http://code.jquery.com/jquery-latest.min.js
// ==/UserScript==

$(document).ready(function() {
$("a").click(function() {
alert('Hello world!');
});
});



włącz mozille i włącz greseamonkey - zminimalizuj mozille i nie myśl przez chwilę winksmiley.jpg

idź do katalogu z plikiem i kliknij prawym myszki na tym skrypcie-> otwórz za pomocą i wybierz mozille - teraz zainstalujesz...

wejdź na forum.php.pl i klikaj jakikolwiek link - zanim przejdziesz na inną stronę powinno być to co chciałeś winksmiley.jpg




a teraz mała jeszcze uwaga co do Twojego kodu:

// @include * - nie wiem czy to działa na wszystkich stronach - już dłuższy czas nie musiałem pisać skryptów dla siebie a jak pisałem to pod konkretne strony - potem poeksperymentujesz jak już będzie powyższe działało ;p

// @name - co do tego nie wiem czy mogą być spacje w nazwie jak Ty podałeś ;p

gdy potrzebowałem pisać userscript to większość pisałem pod operę i jakbyś czasem chciał tam pisać to drobne uwagi - jeśli rozszerzenie jak w greseamonkey to skrypt wykona się po załadowaniu dom'u, jeśli rozszerzenie tylko js to skrypt jest aktywny od początku wczytywania (zanim jeszcze się dom wczyta) - i tu już sam musisz zdarzeniami operować

jeszcze apropo mozilli - tam skrypty od funkcji na stronie bodajrze mocno są oddzielono - ale jeśli chcesz je wywoływać to poczytaj tip'y w manualu żeby nie korzystać z unsafe.Window (jakoś tak się pisze ;p)

w operze skrypty są mniej oddzielone od obiektu window (wielu stwierdzi że za mało) ale wystarczy pisać tylko anonimowe obiekty gdzie da się zawrzeć także anonimowe funkcje posiadające jednak wewnętrzne nazwy - jeśli potrzebowałem załączyć jakąś mniejszą bibliotekę (tak mniejszą gdyż jakoś nie kożystam z tak dużych bibliotek - co najwyżej czasami przeglądam źródła ;p) to w operze można załączyć przez dom (akurat niedawno tu na forum był temat o załączaniu prototype przez dom)...

Cytat
Da się doładować 2 pliki do jednego skryptu?


z tego co pamiętam to da się winksmiley.jpg - a z tego co sprawdziłem to sporo pamiętam jeszcze winksmiley.jpg

Ten post edytował zegarek84 6.12.2009, 23:02:37


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
ShadowD
post 6.12.2009, 23:57:24
Post #10





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

Ostrzeżenie: (0%)
-----


Mocno łopatologicznie to wytłumaczyłeś - dzięki. ;]

Ogólnie, myślałem że 'instalowanie' jest równoznaczne z klikiem [nowy skrypt] a tu się okazuje co innego (jak dodatki do ff).

Co do oddzielenie mojego kodu(userjs) od strony jestem świadom, używam tego typu kodu np do usunięcia ostatnio dodanego efektu google (pojawiania się części strony po ruchu myszą) czy też jakieś drobne dodatki do strony.

Ogólnie wszystko działa, jeszcze kilka testów jak jedne pliki wpływają na drugie, ale to już w własnym zakresie.

Jeszcze raz dzięki za pomoc i setny 'pomógł' leci do Ciebie!! winksmiley.jpg

Ten post edytował ShadowD 6.12.2009, 23:58:17


--------------------
Mój blog - o wszystkim i niczym ale zazwyczaj związane z informatyką! ;-)
Githube

Usługi spawalnicze i monterskie | Park linowy Lublin i Okunince
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 07:55