2013-06-18 10 views
10

यह एक अजीब विशिष्ट प्रश्न है।एकाधिक डोमेन पर Greasemonkey स्क्रिप्ट सहित

मैं एक Greasemonkey स्क्रिप्ट लिख रहा हूं जो दस डोमेन में चलेगा। वेबसाइटों में सभी समान संरचनाएं हैं, लेकिन प्रत्येक के लिए डोमेन नाम अलग है। उदाहरण के लिए, स्क्रिप्ट पर चलेंगे:

http://first-domain.com/ 
http://another-one.com/ 
http://you-get-the-point.com/ 

मैं भी यह एक ही डोमेन के बीच अन्य पृष्ठों पर चलाने की आवश्यकता है, तो सिर्फ इन डोमेन में से एक के लिए सूची होगा कुछ की तरह:

http://first-domain.com/admin/edit/* 
http://first-domain.com/blog/* 
http://first-domain.com/user/*/history 

जाहिर है कि अगर मैं सभी दस डोमेन के लिए इन तीन पथों को शामिल कर रहा हूं, तो 30 यूआरएल मुझे @include एस के रूप में सूचीबद्ध करने की आवश्यकता है।

तो मैं वहाँ की तरह कुछ करने के लिए कोई तरीका है सोच रहा हूँ:

// Obviously fake code: 

var list_of_sites = ["first-domain", "another-one", "you-get-the-point"]; 

@include http:// + list_of_sites[any] + .com/admin/edit/* 
@include http:// + list_of_sites[any] + .com/blog/* 
@include http:// + list_of_sites[any] + .com/user/*/history 

कुछ इस तरह संभव हो तो, इसे नीचे 3. करने के लिए

तो 30 से @include रों की सूची में कटौती करेगा क्या यह संभव है, या मैं सपना देख रहा हूँ?

पीएस मुझे पता है कि मैं सिर्फ @include http://first-domain.com/* कर सकता हूं और उसके बाद उस डोमेन के कुछ पथों पर स्क्रिप्ट के कुछ हिस्सों को चलाने के लिए if कथन का उपयोग कर सकता हूं, लेकिन स्क्रिप्ट का उद्देश्य उन पृष्ठों की संख्या है जो साइट के लगभग 2% हैं, इसलिए यह प्रत्येक वेबसाइट के प्रत्येक पृष्ठ पर लिपि शामिल करने के लिए अपमानजनक लगता है।

उत्तर

15

संदर्भ:

समाधान है कि Greasemonkey (जो फ़ायरफ़ॉक्स है) पर काम करते हैं, क्रोम पर और Tampermonkey पर अलग हो सकता है।

तीन बुनियादी दृष्टिकोण:

  1. उपयोग 30 विभिन्न @include लाइनों: इस कट और पेस्ट कोडिंग के मामले में अरुचिकर हो सकता है, यह एक दृष्टिकोण है कि एक ही भर ब्राउज़रों काम करेगा और वह सबसे अच्छा ब्राउज़र प्रदर्शन होगा। अन्य दृष्टिकोणों के लिए ब्राउज़र को संभवतः प्रत्येक पृष्ठ या आईफ्रेम के दौरे के खिलाफ (अधिक) चेक करने की आवश्यकता होती है।

  2. एक regex @include का उपयोग करें:

    @include /^http:\/\/(1stDomain\.com|2ndDomain\.com|3rdDomain\.net|etc.)\/(admin\/edit|blog|user\/.+?\/history)/ 
    

    यह एक लाइन है, और काफी अच्छी तरह से करता है, लेकिन लाइन बोझल प्राप्त कर सकते हैं, और इस केवल Greasemonkey और Tampermonkey पर काम करेंगे (और शायद Scriptish)।@match, @include और @exclude के विभिन्न संयोजनों

  3. उपयोग: मैं केवल एक संभावना के रूप में इस का उल्लेख है। यह सीधे क्रोम पर सबसे अच्छा प्रदर्शन करने वाला दृष्टिकोण है, लेकिन इस तरह की चीज़ के लिए बहुत क्रॉस-ब्राउजर नहीं है। Greasemonkey या Tampermonkey उपयोग दृष्टिकोण 1 या दृष्टिकोण 2.

के लिए मैं सुझाव है कि आप प्रमुख वाइल्डकार्ड से बचने, के रूप में ज्यादा हो सके। वे ब्राउज़र को सबसे धीमा कर देते हैं। ईजी, अगर आप इससे बच सकते हैं तो @include /^.+ .../, या @include http:/*/* जैसे कुछ का उपयोग न करें।

+1

सुंदर, यह शानदार है! दृष्टिकोण # 2 मेरी स्थिति को सर्वोत्तम बनाता है, और मुझे अब पूरी तरह से काम मिल गया है। यह एक निजी लिपि के लिए है जो केवल Greasemonkey और Tampermonkey को लक्षित कर रहा है, इसलिए संगतता ठीक है। आप एक किंवदंती हैं! – blimpage

+0

आपका स्वागत है; मदद करने में खुशी। –

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