2010-01-07 17 views
9

मेरे वेब पेज से HTML बटन का उपयोग करके मेरे एक्सटेंशन में घोषित जावास्क्रिप्ट फ़ंक्शन को कैसे कॉल करें?किसी HTML बटन से फ़ायरफ़ॉक्स एक्सटेंशन में फ़ंक्शन को कॉल करने के लिए कैसे करें

मेरे पास एक बटन के साथ एक HTML पृष्ठ है। जब उपयोगकर्ता बटन पर क्लिक करता है, तो वह उस फ़ंक्शन को कॉल करेगा जिसे मैंने पहले ही अपने फ़ायरफ़ॉक्स एक्सटेंशन के अंदर घोषित कर दिया है।

+0

मैं जब मैं विस्तार के अंदर एक xml फ़ाइल के लिए लिखने की कोशिश यह त्रुटि आई अनुमति के लिए इनकार कर दिया संपत्ति XPCComponents.classes किसी भी विचार है कि यह कैसे हल करने के लिए प्राप्त करने के लिए? –

+0

क्या आप

उत्तर

5

आपका फ़ायरफ़ॉक्स एक्सटेंशन आपके HTML पृष्ठ पर एक अलग जावास्क्रिप्ट संदर्भ में चलता है, इसलिए विस्तार को सीधे आपके HTML पृष्ठ में जावास्क्रिप्ट से नहीं कहा जा सकता है।

हालांकि, आप एचटीएमएल से एक्सेस की अनुमति देने के लिए एक्सटेंशन डिज़ाइन कर सकते हैं। एचटीएमएल जावास्क्रिप्ट को आम तौर पर घटक ऑब्जेक्ट तक पहुंचने की अनुमति नहीं दी जाती है, इसलिए आपको एचटीएमएल कोड को अपने एक्सटेंशन में ऑब्जेक्ट पर जाने की अनुमति देने की आवश्यकता है। ऐसा करने के लिए, अपने एक्सटेंशन में एक XPCOM घटक बनाएं, और ऑब्जेक्ट को nsicategoryManager ऑब्जेक्ट के माध्यम से "जावास्क्रिप्ट वैश्विक संपत्ति" श्रेणी में सेट करें। प्रविष्टि नाम अनधिकृत जावास्क्रिप्ट से उपयोग की जाने वाली स्ट्रिंग है, मान आपके XPCOM क्लास के लिए अनुबंध आईडी है।

हालांकि, आपको अपने ऑब्जेक्ट में अनधिकृत जावास्क्रिप्ट पहुंच की अनुमति देने की भी आवश्यकता है, या स्क्रिप्ट सुरक्षा प्रबंधक पहुंच को अवरुद्ध कर देगा। इसे अनुमति देने के लिए, nsISecurityCheckedComponent को कार्यान्वित करें - canCreateWrapper (nsIIDPtr iid में) प्रदान कर सकते हैं, canCallMethod (nsIIDPtr iid में, wstring methodName में), canGetProperty (nsIIDPtr iid में, wstring propertyName में) और canSetProperty (nsIIDPtr iid में, wstring propertyName में) allAccess को वापस करने के लिए अनुमत गुणों के लिए, और अन्यथा पहुंच नहीं है।

सावधान रहें कि आप उपयोगकर्ता इनपुट के साथ क्या करते हैं, और आप किस तक पहुंच की अनुमति देते हैं - यह करने में ब्राउज़र में गलती से सुरक्षा छेद बनाना बहुत आसान है।

+1

टीएल; डॉ :) यह मूल समस्या के लिए एक ओवरकिल है, ऐसा लगता है कि मेरा जवाब देखें। – Nickolay

7

के बाद से आप वेब पेज को नियंत्रित, सबसे आसान व सुरक्षित विधि क्या आप विस्तार कोड में वेब पेज में एक कस्टम डोम घटना प्रेषण और यह सुनने के लिए किया जाएगा चाहता हूं:

https://developer.mozilla.org/En/Code_snippets/Interaction_between_privileged_and_non-privileged_pages

यहां एक उदाहरण एक्सटेंशन है जो मैंने लिखा है कि वास्तव में यह http://mozilla.doslash.org/cw/ (नवीनतम फ़ायरफ़ॉक्स संस्करण में अपडेट नहीं किया गया है, लेकिन यह साफ़ है और अपडेट करना आसान होना चाहिए)।

netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); 

इस रूप में है कि क्या वे अपने कोड स्थानीय का उपयोग करने की अनुमति देना चाहते हैं के लिए उपयोगकर्ता विकल्प दे देंगे:

1

कोशिश अपने जावास्क्रिप्ट समारोह की शुरुआत एक स्थानीय फ़ाइल का उपयोग करने की कोशिश करता है कि इस डाल करने के लिए फाइल सिस्टम। त्रुटि::

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

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