मैंने 2005 में लिखा "Dive into Greasemonkey" (Mark Pilgrim द्वारा) पढ़ा। यह उल्लेख करता है कि Greasemonkey एक अज्ञात फ़ंक्शन रैपर में उपयोगकर्ता स्क्रिप्ट को लपेटता है। क्या Greasemonkey स्रोत जावास्क्रिप्ट कोड में रैपर डालें या इसे window.onload
जैसे किसी इवेंट हैंडलर के रूप में जोड़ें?जावास्क्रिप्ट - कैसे Greasemonkey काम करता है
7
A
उत्तर
6
कोड को इंगित करने के लिए धन्यवाद। जब DOMContentLoaded ईवेंट निकाल दिया जाता है, तो घटना के हैंडलर के रूप में आवेदक का आवरण या स्रोत कोड के हिस्से के रूप में डाला गया रैपर होता है? दूसरे शब्दों में, लाइन 30 9, this.evalInSandbox ("(फ़ंक्शन() {" + scriptSrc + "})()", url, sandbox, script), रैपर निष्पादित करता है या रैपर को मूल जावास्क्रिप्ट कोड में सम्मिलित करता है? – Paul
पहला जीएम DOMContentLoaded ईवेंट के लिए सुनता है, जब ऐसा होता है तो जीएम निर्धारित करता है कि कौन से उपयोगकर्ता स्क्रिप्ट चलाना चाहिए (@ शामिल/@ नियमों को छोड़कर, और यह जांचना कि यूआरएल 'greasemonkeyable' है), फिर उपयोगकर्तास्क्रिप्ट से स्रोत कोड (जो सिर्फ एक है इस बिंदु पर स्ट्रिंग) जिसे चलाने के लिए एक अज्ञात स्वयं निष्पादन फ़ंक्शन (स्ट्रिंग कॉन्सटेनेशन के माध्यम से) में लपेटा जाना चाहिए, और अंततः अज्ञात स्वयं निष्पादन फ़ंक्शन (जो उपयोगकर्तास्क्रिप्ट चलाता है) पर evalInSandbox करता है। – erikvold
तो स्क्रिप्ट को उस समय निष्पादित किया जाता है जब इसे इंजेक्शन दिया जाता है। क्या यह सही है? – Paul