6

क्या ऐसा करने का कोई आसान तरीका है। और क्या ऐसा कुछ भी है जो इसे बदलने के तरीके में मतभेदों के कारण बदला जाना चाहिए?एक बुकमार्कलेट को Greasemonkey उपयोगकर्तालेख में कैसे परिवर्तित करें?

उत्तर

5

यह करने के लिए सबसे आसान तरीका है:

  1. एक URL decoder के माध्यम से बुकमार्कलेट कोड चलाएँ। ताकि javascript:alert%20('Hi%20Boss!')%3B, उदाहरण के लिए, हो जाता है:
    javascript:alert ('Hi Boss!');

  2. पट्टी प्रमुख javascript: बंद। परिणाम: alert ('Hi Boss!');

  3. इस कोड को अपनी Greasemonkey फ़ाइल के अंत में जोड़ें। उदाहरण के लिए, इस कोड के साथ, नाम की एक फ़ाइल,
    हैलो World.user.js बनाएँ:

    // ==UserScript== 
    // @name   Hello World! 
    // @description  My first GM script from a bookmarklet 
    // @include   https://stackoverflow.com/questions/* 
    // @grant   none 
    // ==/UserScript== 
    
    alert ('Hi Boss!'); 
    
  4. ओपन हैलो World.user.js Firefox के साथ (Ctrl)। Greasemonkey स्क्रिप्ट स्थापित करने के लिए संकेत देगा।

  5. अब बुकमार्कलेट कोड @include और @exclude निर्देशों के साथ निर्दिष्ट पृष्ठों पर स्वचालित रूप से चला जाएगा।

  6. अद्यतन: अधिकतम संगतता सुनिश्चित करने के लिए, @grant none निर्देश है कि Greasemonkey और Tampermonkey के बाद के संस्करणों में जोड़ दिया गया का उपयोग करें।


महत्वपूर्ण:

  • userscript और भी जल्दी से आप कोई बुकमार्क कभी सक्रिय कर सकता है चलेंगे। आम तौर पर, यह कोई समस्या नहीं है।

  • लेकिन कुछ मामलों में, आप पूरी तरह से लोड करने के लिए पृष्ठ के कुछ भाग के लिए इंतजार करना पड़ सकता है।
    उस स्थिति में, आप use techniques/utilities like waitForKeyElements कर सकते हैं।

  • यह भी देखें, Choosing and activating the right controls on an AJAX-driven site

  • यदि आपको अभी भी काम करने के लिए अपनी नई स्क्रिप्ट नहीं मिल रही है, तो My very simple Greasemonkey script is not running? पढ़ना सुनिश्चित करें। चरणों का पालन करें और में नई स्क्रिप्ट के साथ समस्याओं के बारे में किसी भी प्रश्न में निर्दिष्ट जानकारी शामिल करें।

+0

यह बहुत अच्छा है, लेकिन यह प्रत्येक पृष्ठ पर स्वचालित रूप से चला जाएगा। मेरे सभी बुकमार्कलेट्स वे चीजें हैं जिन्हें मैं कभी-कभी सक्रिय करना चाहता हूं (जैसे पिनबोर्ड पर पेज को बुकमार्क करना या वेबैक मशीन पर देखना)। जब आप इसे चाहते हैं तो आप इसे केवल निष्पादित कैसे करेंगे? –

+0

@ निकस, यही है ['@ शामिल', '@ बहिष्कृत करें', और '@ मिलान' निर्देश] (https://tampermonkey.net/documentation.php#_include) के लिए हैं। –

+0

क्षमा करें, मुझे स्पष्टीकरण दें: मेरा मतलब है कि मैं एक पेज पर होना चाहता हूं, सोचो "अरे, मैं इसे वेबैक मशीन पर देखना चाहता हूं", * कुछ * पर क्लिक करें, और मेरी स्क्रिप्ट निष्पादित करें (एक नया टैब खोलें वर्तमान यूआरएल के लिए मशीन खोज)। मैं क्या क्लिक करूं? स्क्रिप्ट कैसे टैब को खोलने के बारे में जानती है? –

1

यहाँ avoid common pitfalls "सामान्य" जे एस और Greasemonkey के बीच मतभेद की वजह से एक बहुत अच्छा लेख है।

शुरुआत में सबसे महत्वपूर्ण बातें:

  • , तार के रूप में कार्य का उपयोग न करें जैसे: window.setTimeout("my_func()", 1000); बल्कि window.setTimeout(my_func, 1000); या window.setTimeout(function(){doSomething(); doSomethingOther();}, 1000);
  • निर्धारित न करें element.onclick बल्कि element.addEventListener("click", my_func, true);
  • कुछ कोड जो आम तौर पर विभिन्न डोम लौटाते हैं ऑब्जेक्ट्स, Greasemonkey पर्यावरण में उन वस्तुओं को XPCNativeWrapper में लपेटा जाता है। यह सुरक्षा कारणों से है।

    कुछ विधियां और गुण "पारदर्शी" हैं और आप उन्हें लपेटा हुआ ऑब्जेक्ट पर बुला सकते हैं, लेकिन कुछ नहीं। इस बारे में उल्लिखित आलेख में पढ़ें कि इसे कैसे बाधित किया जाए; आप भी उपयोग कर सकते हैं (यह आम तौर पर अनुशंसित नहीं है, लेकिन परीक्षण आदि के लिए) wrappedJSObject संपत्ति। यह है, जब obj.something/obj.something() Greasemonkey में काम नहीं करता है, obj.wrappedJSObject.something/obj.wrappedJSObject.something() आज़माएं।

संबंधित मुद्दे