7

मैंने 2005 में लिखा "Dive into Greasemonkey" (Mark Pilgrim द्वारा) पढ़ा। यह उल्लेख करता है कि Greasemonkey एक अज्ञात फ़ंक्शन रैपर में उपयोगकर्ता स्क्रिप्ट को लपेटता है। क्या Greasemonkey स्रोत जावास्क्रिप्ट कोड में रैपर डालें या इसे window.onload जैसे किसी इवेंट हैंडलर के रूप में जोड़ें?जावास्क्रिप्ट - कैसे Greasemonkey काम करता है

उत्तर

6

करता Greasemonkey आवरण स्रोत जावा स्क्रिप्ट कोड या यह जोड़ने किसी भी इवेंट हैंडलर window.onload के रूप में इस तरह के रूप में सम्मिलित?

जीएम डोमकंटेंट लोडेड ईवेंट (मूल रूप से डोम तैयार) here को सुनता है। फिर उपयोगकर्तास्क्रिप्ट कोड को लपेटता है और एक सैंडबॉक्स में here डालता है।

+0

कोड को इंगित करने के लिए धन्यवाद। जब DOMContentLoaded ईवेंट निकाल दिया जाता है, तो घटना के हैंडलर के रूप में आवेदक का आवरण या स्रोत कोड के हिस्से के रूप में डाला गया रैपर होता है? दूसरे शब्दों में, लाइन 30 9, this.evalInSandbox ("(फ़ंक्शन() {" + scriptSrc + "})()", url, sandbox, script), रैपर निष्पादित करता है या रैपर को मूल जावास्क्रिप्ट कोड में सम्मिलित करता है? – Paul

+1

पहला जीएम DOMContentLoaded ईवेंट के लिए सुनता है, जब ऐसा होता है तो जीएम निर्धारित करता है कि कौन से उपयोगकर्ता स्क्रिप्ट चलाना चाहिए (@ शामिल/@ नियमों को छोड़कर, और यह जांचना कि यूआरएल 'greasemonkeyable' है), फिर उपयोगकर्तास्क्रिप्ट से स्रोत कोड (जो सिर्फ एक है इस बिंदु पर स्ट्रिंग) जिसे चलाने के लिए एक अज्ञात स्वयं निष्पादन फ़ंक्शन (स्ट्रिंग कॉन्सटेनेशन के माध्यम से) में लपेटा जाना चाहिए, और अंततः अज्ञात स्वयं निष्पादन फ़ंक्शन (जो उपयोगकर्तास्क्रिप्ट चलाता है) पर evalInSandbox करता है। – erikvold

+0

तो स्क्रिप्ट को उस समय निष्पादित किया जाता है जब इसे इंजेक्शन दिया जाता है। क्या यह सही है? – Paul