मैं Greasemonkey में jQuery का उपयोग कैसे कर सकता हूं?


234

मैंने इस लाइन को डालने की कोशिश की लेकिन यह काम नहीं करता है:

// @require       http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js

jQuery Greasemonkey में बिल्कुल भी काम नहीं करता है। Greasemonkey में jQuery का उपयोग करने का कोई और तरीका है?

-

सभी लोगों के लिए जो एक ही समस्या है, आपको फ़ाइल को greaespot पर अपलोड करना होगा फिर इसे वहाँ से इंस्टॉल करें।

नया स्क्रिप्ट बनाएँ विकल्प काम नहीं करेगा!


14
@ जॉर्ज, क्या आप नहीं जानते कि उस वेब साइट में बिल्कुल कोई जादू नहीं है? आप .user.js फ़ाइल एक्सटेंशन के साथ कुछ भी ब्राउज़ कर सकते हैं, और Greasemonkey पूछेगा कि क्या आप इसे इंस्टॉल करना चाहते हैं। इसमें आपके स्थानीय कंप्यूटर पर फ़ाइलें शामिल हैं। किसी भी स्क्रिप्ट को स्थापित करना उतना ही सरल है जितना इसे अपने ब्राउज़र पर खींचना।
रोब कैनेडी

5
ऐसा लगता है कि स्थापना के बाद फ़ाइल को संपादित करते समय भी यह अच्छी तरह से काम करता है।
जोसेफ सलैब

6
जोसेफ सही है - संस्करण 0.9.0 के बाद से , Greasemonkey अब फ़ाइल को संपादित करते ही @required फ़ाइलों को स्थापित करेगा।
रोरी ओ'केन

1
इसके अलावा अभी भी $(document).ready(function() {...});अपने कोड में उपयोग करने के लिए मत भूलना
उपयोगकर्ता

1
आपको रिफ्रेश करने का सबसे आसान तरीका है स्टेटमेंट @requiresके अंत में हैश या क्वेरिस्ट्रिंग जोड़ना @require, और जब भी इसे अपडेट करने की आवश्यकता हो, इसे बदल दें। जिस तरह से आप एक कैशवैन "कैशबस्ट" करेंगे। // @require http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js?v=changeme
अपाचे

जवाबों:


189

शायद आपके पास Greasemonkey का हालिया पर्याप्त संस्करण नहीं है। यह संस्करण 0.8 था जो जोड़ा गया था @require

// @require https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js 

यदि आपके पास 0.8 नहीं है, तो तकनीक का उपयोग करें Joan Piedra पृष्ठ पर एक scriptतत्व को मैन्युअल रूप से जोड़ने के लिए वर्णन करता है ।

संस्करण 0.8 और 0.9 के बीच, @requireहै केवल जब स्क्रिप्ट पहले स्थापित किया गया है संसाधित। यदि आप आवश्यक स्क्रिप्ट की सूची को बदलते हैं, तो आपको अपनी स्क्रिप्ट को अनइंस्टॉल करना होगा और इसे फिर से इंस्टॉल करना होगा; Greasemonkey स्थापना के समय एक बार आवश्यक स्क्रिप्ट डाउनलोड करता है और उसके बाद एक कैश्ड कॉपी का उपयोग करता है।

0.9 के रूप में, ग्रीसेमेकनी व्यवहार बदल गया है ( एक संबंधित मुद्दे को संबोधित करने के लिए ) ताकि यह अब हर संपादन के बाद आवश्यक स्क्रिप्ट को लोड करे; स्क्रिप्ट को फिर से स्थापित करना अब आवश्यक नहीं है।


रोब, तो मुझे क्या करने की आवश्यकता है? मैं नई उपयोगकर्ता स्क्रिप्ट लिंक का उपयोग करके अपनी उपयोगकर्ता स्क्रिप्ट बना रहा हूं। मैं @require जोड़ता हूं और यह काम नहीं किया। तो मैं इसे कैसे काम कर सकता हूं? कृपया समझाएं कि मैं चाहता हूं कि @require पद्धति काम करे क्योंकि यह स्क्रिप्ट तत्व विधि की तुलना में अधिक सुंदर है
केइरा निगली

1
ठीक है तो मैंने इसे काम किया। धन्यवाद!!! मैंने स्क्रिप्ट को Greaespot में अपलोड किया और इसे वहां से इंस्टॉल किया।
केइरा नेगली

2
मुझे लगता है कि जब आप Greasemonkey के भीतर से एक नई स्क्रिप्ट बनाते हैं, तो स्क्रिप्ट तुरंत स्थापित हो जाती है। वह स्क्रिप्ट डिफ़ॉल्ट खाली फ़ाइल है, जिसका अर्थ है कि आपने किसी भी बाहरी स्क्रिप्ट की आवश्यकता के लिए अपना मौका गंवा दिया है।
रोब केनेडी

तो आपके द्वारा बनाई जा रही नई स्क्रिप्ट पर @require का उपयोग करने का कोई तरीका नहीं है? : /
quano

4
यह काफी सरल है, @Quano। एक नई .user.js फ़ाइल बनाएं, इसमें अपनी स्क्रिप्ट लिखें, और फिर इसे स्थापित करने के लिए इसे अपने ब्राउज़र पर खींचें। बाहरी स्क्रिप्ट की आवश्यकता पर सीमा केवल तभी मौजूद होती है जब आप स्क्रिप्ट को Greasemonkey के UI से बनाते हैं , लेकिन इसकी कोई आवश्यकता नहीं है कि स्क्रिप्ट फ़ाइल बनाने के लिए आपको Greasemonkey का उपयोग करना होगा। आप इसे स्थापित करने के बाद स्क्रिप्ट को संपादित कर सकते हैं, लेकिन यदि आप नए @requireनिर्देश जोड़ना चाहते हैं , तो आपको इसे प्रभावी करने के लिए स्क्रिप्ट को अनइंस्टॉल और पुनर्स्थापित करना होगा।
रोब कैनेडी

81

यदि आप उस साइट पर jQuery का उपयोग करना चाहते हैं जहां यह पहले से ही शामिल है, तो यह जाने का तरीका है (ब्रूनोएलएम से प्रेरित):

var $ = unsafeWindow.jQuery;

मुझे पता है कि यह सवाल का मूल इरादा नहीं था, लेकिन यह तेजी से एक आम मामला बनता जा रहा है और आपने स्पष्ट रूप से इस मामले को बाहर नहीं किया है। ;)


4
Chrome में स्पष्ट रूप से समर्थित नहीं है - chromium.org/developers/design-documents/user-scripts
Ashley

फ़ायरफ़ॉक्स के स्क्रिप्टिश में काम करता है!
Gqqnbig

2
परीक्षण करना चाहते हैं कि आपके पास पहले से ही ऐसा नहीं है: if(typeof $ == 'undefined'){ var $ = unsafeWindow.jQuery; } क्रोम में, एक साइट Jquery पहले से ही उपलब्ध होगी।
जोनाथन

हम्म। इसका उपयोग करते समय मुझे वास्तव में अजीब त्रुटि हो रही है। यह alert($('.submit_entry').length);एक ही समय में, दोनों त्रुटि-अंतर्ग्रहण, और उचित चेतावनी भेज रहा है।
जोनाथन

21

आपकी Greasemonkey स्क्रिप्ट के भीतर jQuery की संपूर्णता को शामिल करने में कुछ भी गलत नहीं है। बस स्रोत ले लो, और इसे अपने उपयोगकर्ता स्क्रिप्ट के शीर्ष पर रखें। कोई स्क्रिप्ट टैग बनाने की आवश्यकता नहीं है, क्योंकि आप पहले से ही जावास्क्रिप्ट निष्पादित कर रहे हैं!

उपयोगकर्ता वैसे भी केवल एक बार स्क्रिप्ट डाउनलोड करता है, इसलिए स्क्रिप्ट का आकार एक बड़ी चिंता का विषय नहीं है। इसके अलावा, यदि आप कभी भी अपनी Greasemonkey स्क्रिप्ट को गैर-जीएम वातावरण में काम करना चाहते हैं (जैसे कि ओपेरा की GM-esque उपयोगकर्ता स्क्रिप्ट, या सफारी पर Greasekit), तो यह @require जैसे GM- अनूठे निर्माणों का उपयोग नहीं करने में मदद करेगा।


7

रोब का समाधान सही है - @requirejQuery लाइब्रेरी के साथ उपयोग करें और अपनी स्क्रिप्ट को पुनर्स्थापित करना सुनिश्चित करें ताकि निर्देश संसाधित हो जाए।

मुझे लगता है कि एक बात जोड़ने लायक है कि आप AJAX विधियों को छोड़कर , सामान्य रूप से अपने स्क्रिप्ट में शामिल करने के बाद सामान्य रूप से jQuery का उपयोग कर सकते हैं । डिफ़ॉल्ट रूप से jQuery XMLHttpRequest के लिए दिखता है, जो कि Greasemonkey संदर्भ में मौजूद नहीं है। मैंने एक वर्कअराउंड के बारे में लिखा था, जहाँ आप GM_xmlhttpRequest (XHR के Greasemonkey संस्करण) के लिए एक आवरण बनाते हैं और ajaxSetup()अपने लिपटे हुए संस्करण को डिफ़ॉल्ट के रूप में निर्दिष्ट करने के लिए jQuery का उपयोग करते हैं। एक बार जब आप ऐसा करते हैं, आप उपयोग कर सकते हैं $.getऔर $.postहमेशा की तरह।

आपको jQuery की समस्याएँ भी हो सकती हैं $.getJSONक्योंकि यह <script>टैग का उपयोग करके JSONP को लोड करता है । यह त्रुटियों की ओर जाता है क्योंकि jQuery Greasemonkey विंडो के दायरे में कॉलबैक फ़ंक्शन को परिभाषित करता है, और लोडेड स्क्रिप्ट मुख्य विंडो के दायरे में कॉलबैक की तलाश करती है। आपकी सबसे अच्छी शर्त $.getइसके बजाय उपयोग करना है और परिणाम को पार्स करना है JSON.parse()


4

आप Greasemonkey में नई उपयोगकर्ता स्क्रिप्ट का उपयोग करके एक नई स्क्रिप्ट बना सकते हैं, लेकिन आपको gm_scripts फ़ोल्डर के अंदर config.xml फ़ाइल को संपादित करना होगा।

आपकी config.xml फ़ाइल में इसके समान सिंटैक्स होना चाहिए:

<Script filename="jquery_test.user.js" name="jQuery Test" namespace="http://www.example.com/jQueryPlay/" description="Just a test" enabled="true" basedir="jquery_test">
        <Include>http://*</Include>
        <Require filename="jquery.js"/>
</Script>

<Require>टैग पर ध्यान दें ।

अपनी स्क्रिप्ट में आप डायरेक्ट jQuery सिंटैक्स का उपयोग कर सकते हैं। सुनिश्चित करें कि आपके पास Greasemonkey हेडर में आवश्यक टैग है। यहाँ एक हैलो वर्ल्ड उदाहरण है:

// ==UserScript==
// @name           Test jQuery
// @namespace      http://www.example.com/jQueryPlay/
// @description    Just a test
// @include        http://*
// @require       http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js
// ==/UserScript==

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

याद रखें कि config.xml को संशोधित करने के बाद आपको सेटिंग्स को फिर से लोड करने के लिए Greasemonkey के लिए अपने ब्राउज़र को पुनरारंभ करना होगा।

यह भी ध्यान रखें कि आपको काम करने के लिए अपने स्क्रिप्ट निर्देशिका फ़ोल्डर में jquery.js फ़ाइल की प्रतिलिपि बनाने की आवश्यकता है। मैंने यह परीक्षण किया है, और यह केवल तभी काम करता है जब आप वास्तव में फ़ाइल को मैन्युअल रूप से कॉपी करते हैं।

हैप्पी jQuerying!


4

अद्यतन : जैसा कि नीचे टिप्पणी में कहा गया है, यह उत्तर अप्रचलित है।

जैसा कि बाकी सभी ने कहा है, @require तभी चलता है जब स्क्रिप्ट स्थापित हो। हालाँकि, आपको इस बात पर ध्यान देना चाहिए कि वर्तमान में jQuery 1.4। * चिकनाई के साथ काम नहीं करता है। आप यहाँ विवरण के लिए देख सकते हैं: http://forum.jquery.com/topic/importing-jquery-1-4-1-into-greasemonkey-scripts-generates-an-error

जब तक चीजें नहीं बदलतीं, आपको jQuery 1.3.2 का उपयोग करना होगा।


3
यह उत्तर GM संस्करण 0.9 या बाद के संस्करण के रूप में अप्रचलित है।
ब्रॉक एडम्स

3
@ क्रॉस: क्यों? क्या आप हमें नोब्स के लिए समझा सकते हैं?
ट्रेवर सुलिवन

4

यदि आप क्रोम का उपयोग कर रहे हैं तो आपको एक विकल्प चुनना होगा क्योंकि क्रोमियम समर्थन नहीं करता है @require

स्रोत: क्रोमियम प्रोजेक्ट - उपयोगकर्ता स्क्रिप्ट

Google Chrome में Greasemonkey लिपियों में मैं jQuery का उपयोग कैसे कर सकता हूं, इस पर अधिक विवरण और विकल्प ?


2

@require मेटा तब काम नहीं करता है जब आप jQuery का उपयोग करके वेबपेज पर ईवेंट्स को अनबाइंड करना चाहते हैं, आपको वेब पेज में शामिल एक jQuery लाइब्रेरी का उपयोग करना होगा और फिर इसे Greasemonkey में प्राप्त करना होगा कि मैं Greasemonkey में jbery ईवेंट हैंडलर को var $ = unsafeWindow.jQuery; कैसे अनबाइंड करूं?


1

Component unavailableयदि आप सीधे jQuery स्क्रिप्ट आयात करते हैं तो आपको मिल सकता है ।

शायद यह बात है @Conley किस बारे में बात कर रही थी ...

आप उपयोग कर सकते हैं

@require        http://userscripts.org/scripts/source/85365.user.js

जो कि Greasemonkey पर काम करने के लिए एक संशोधित संस्करण है, और फिर jQuery ऑब्जेक्ट प्राप्त करें

var $ = unsafeWindow.jQuery;
$("div").css("display", "none");

मुझे लगता है कि यह 5 यो है, लेकिन बस सोच रहा था: क्या यह jQuery ऑब्जेक्ट प्राप्त करने के लिए गलत नहीं है जैसे कि यह पहले से ही पृष्ठ पर परिभाषित किया गया था, इसे असुरक्षित window.jQuery के रूप में संदर्भित करता है?
jj_

0

@requireहै नहीं जब स्क्रिप्ट पहले स्थापित किया गया है केवल संसाधित! मेरी टिप्पणियों पर यह पहले निष्पादन समय पर सफल होता है! तो आप ब्रांड-नई स्क्रिप्ट बनाने के लिए Greasemonkey की कमांड के माध्यम से एक स्क्रिप्ट स्थापित कर सकते हैं । केवल एक चीज जिस पर आपको ध्यान रखना है, वह यह है कि कोई पृष्ठ पुनः लोड नहीं हो रहा है, आप @requireभाग जोड़ सकते हैं । (और नई स्क्रिप्ट को सहेजें ...)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.