Próbowałem umieścić tę linię, ale to nie działa:
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js
jQuery w ogóle nie działa w Greasemonkey. Czy istnieje inny sposób korzystania z jQuery w Greasemonkey?
-
Dla wszystkich osób, które mają ten sam problem, musisz przesłać plik do punktu dostępu, a następnie zainstalować go stamtąd.
Opcja Utwórz nowy skrypt nie działa!
jquery
greasemonkey
Keira Nighly
źródło
źródło
$(document).ready(function() {...});
w swoim kodzie@requires
jest dodanie skrótu lub kwerendy na końcu@require
instrukcji i zmienianie go za każdym razem, gdy wymaga aktualizacji. Podobne do sposobu, w jaki „cachebust” favicon.// @require http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js?v=changeme
Odpowiedzi:
Być może nie masz wystarczająco nowej wersji Greasemonkey. Dodano wersję 0.8
@require
.Jeśli nie masz 0,8, skorzystaj z techniki opisanej przez Joan Piedra w celu ręcznego dodania
script
elementu do strony .Pomiędzy wersją 0.8 a 0.9
@require
jest przetwarzany tylko przy pierwszej instalacji skryptu. Jeśli zmienisz listę wymaganych skryptów, musisz odinstalować skrypt i zainstalować go ponownie; Greasemonkey pobiera wymagany skrypt raz podczas instalacji, a następnie używa kopii w pamięci podręcznej.Od wersji 0.9 zachowanie Greasemonkey zmieniło się (w celu rozwiązania problemu związanego ze styczną ), tak że teraz ładuje wymagane skrypty po każdej edycji; ponowna instalacja skryptu nie jest już konieczna.
źródło
@require
dyrektywy, musisz odinstalować i ponownie zainstalować skrypt, aby zadziałał.Jeśli chcesz użyć jQuery na stronie, na której jest już uwzględniony, jest to odpowiedni sposób (zainspirowany przez BrunoLM):
Wiem, że nie było to pierwotnym celem pytania, ale staje się coraz bardziej powszechnym przypadkiem i nie wykluczyłeś go wyraźnie. ;)
źródło
if(typeof $ == 'undefined'){ var $ = unsafeWindow.jQuery; }
Chrome witryna Jquery będzie już dostępna.alert($('.submit_entry').length);
to zarówno błąd, jak i wysłanie odpowiedniego ostrzeżenia w tym samym czasie.Nie ma absolutnie nic złego w włączeniu całego jQuery do skryptu Greasemonkey. Po prostu weź źródło i umieść je na górze skryptu użytkownika. Nie musisz tworzyć tagu skryptu, ponieważ już uruchamiasz JavaScript!
Użytkownik i tak pobiera skrypt tylko raz, więc rozmiar skryptu nie stanowi dużego problemu. Ponadto, jeśli kiedykolwiek chcesz, aby skrypt Greasemonkey działał w środowiskach innych niż GM (takich jak skrypty użytkownika GM w wersji Opera lub Greasekit w przeglądarce Safari), pomoże to nie używać unikatowych dla GM konstrukcji, takich jak @require.
źródło
Rozwiązanie Roba jest właściwe - użyj
@require
z biblioteką jQuery i koniecznie zainstaluj ponownie skrypt, aby dyrektywa została przetworzona.Jedną rzeczą, którą moim zdaniem warto dodać, jest to, że możesz używać jQuery normalnie po włączeniu go do skryptu, z wyjątkiem metod AJAX . Domyślnie jQuery szuka XMLHttpRequest, który nie istnieje w kontekście Greasemonkey. Pisałem o obejście gdzie można utworzyć otoki dla GM_xmlhttpRequest (wersja Greasemonkey od XHR) i wykorzystać jQuery
ajaxSetup()
aby określić owinięte wersję jako domyślną. Gdy to zrobisz, możesz użyć$.get
i$.post
jak zwykle.Możesz również mieć problemy z jQuery,
$.getJSON
ponieważ ładuje JSONP za pomocą<script>
znaczników. Prowadzi to do błędów, ponieważ jQuery definiuje funkcję wywołania zwrotnego w zakresie okna Greasemonkey, a załadowane skrypty szukają wywołania zwrotnego w zakresie okna głównego. Najlepiej jest użyć$.get
zamiast tego i przeanalizować wynikJSON.parse()
.źródło
Możesz utworzyć nowy skrypt za pomocą nowego skryptu użytkownika w Greasemonkey, ale musisz edytować plik config.xml w folderze gm_scripts.
Twój plik config.xml powinien mieć podobną składnię jak ta:
Zwróć uwagę na
<Require>
tag.W swoim skrypcie możesz użyć bezpośredniej składni jQuery. Upewnij się, że masz wymagany tag w nagłówku Greasemonkey. Oto przykład Hello World:
Pamiętaj, że po zmodyfikowaniu pliku config.xml musisz ponownie uruchomić przeglądarkę, aby Greasemonkey ponownie załadował ustawienia.
Pamiętaj również, że musisz skopiować plik jquery.js do folderu katalogu skryptów, aby to zadziałało. Przetestowałem to i działa tylko wtedy, gdy faktycznie skopiujesz plik ręcznie.
Szczęśliwego jQuerying!
źródło
Aktualizacja : Jak mówi poniższy komentarz, ta odpowiedź jest nieaktualna.
Jak wszyscy powiedzieli, @require jest uruchamiane tylko po zainstalowaniu skryptu. Jednak należy również zauważyć, że obecnie jQuery 1.4. * Nie działa z fatmonkey. Możesz zobaczyć tutaj szczegóły: http://forum.jquery.com/topic/importing-jquery-1-4-1-into-greasemonkey-scripts-generates-an-error
Będziesz musiał używać jQuery 1.3.2, aż wszystko się zmieni.
źródło
Jeśli używasz Chrome, musisz wybrać alternatywę, ponieważ Chromium nie obsługuje
@require
.Źródło: The Chromium Project - Skrypty użytkownika
Więcej szczegółów i alternatyw na temat Jak korzystać z jQuery w skryptach Greasemonkey w Google Chrome?
źródło
meta @require nie działa, gdy chcesz cofnąć powiązanie zdarzeń na stronie za pomocą jQuery, musisz użyć biblioteki jQuery zawartej na stronie, a następnie pobrać ją w Greasemonkey za pomocą
var $ = unsafeWindow.jQuery;
Jak usunąć powiązanie procedur obsługi zdarzeń jquery w greasemonkey?źródło
Możesz to uzyskać,
Component unavailable
jeśli bezpośrednio zaimportujesz skrypt jQuery.Może o tym mówiła @Conley ...
Możesz użyć
która jest zmodyfikowaną wersją do pracy na Greasemonkey, a następnie pobierz obiekt jQuery
źródło
@require
NIE jest przetwarzany tylko przy pierwszej instalacji skryptu! Z moich obserwacji wynika, że jest on przetwarzany przy pierwszym wykonaniu! Więc można zainstalować za pomocą polecenia skryptu Greasemonkey dla tworzenia skryptu nowiuteńki. Jedyną rzeczą, na którą musisz uważać, jest to, że nie zostanie uruchomione ponowne ładowanie strony, zanim dodasz@require
część. (i zapisz nowy skrypt ...)źródło