2012-12-03 18 views
8

मैं एक क्रोम एक्सटेंशन विकसित कर रहा हूं जो सामग्री स्क्रिप्ट में jQuery/Zepto का उपयोग करता है। अब, एक्सटेंशन प्रत्येक वेबसाइट पर चलाने के लिए है, जिसका अर्थ है कि उपयोगकर्ता द्वारा खुलने वाले प्रत्येक टैब पर jQuery/Zepto की एक प्रति लोड की जाती है।क्रोम एक्सटेंशन: सामग्री स्क्रिप्ट और पृष्ठभूमि स्क्रिप्ट के बीच एक ऑब्जेक्ट साझा करना

क्या विभिन्न सामग्री स्क्रिप्ट के बीच jQuery/Zepto ऑब्जेक्ट को साझा करने का कोई तरीका है?

मुझे पता है कि सामग्री स्क्रिप्ट पृष्ठभूमि स्क्रिप्ट के साथ संवाद कर सकते हैं। मैं पृष्ठभूमि स्क्रिप्ट को jQuery ऑब्जेक्ट तक पहुंचने और प्रत्येक सामग्री स्क्रिप्ट के लिए इसका संदर्भ वापस करने में सक्षम होने की उम्मीद कर रहा था। लेकिन मुझे एहसास हुआ कि सामग्री और पृष्ठभूमि स्क्रिप्ट के बीच केवल JSON संदेश पारित किए जा सकते हैं।

क्या मैं चाहता हूं कि हासिल करने का कोई तरीका है?

+0

नहीं, आप सामग्री स्क्रिप्ट के बीच प्रत्यक्ष फ़ंक्शन संदर्भ साझा नहीं कर सकते हैं। (डुप्लिकेट प्रश्न: [दो अलग-अलग टैब की सामग्री स्क्रिप्ट के बीच डेटा कैसे स्थानांतरित करें?] (http://stackoverflow.com/questions/11597416/how-to-transfer-data-between-the-content-scripts-of- दो अलग-टैब))। –

+0

इसे उत्तर के रूप में पोस्ट करें और मैं इसे स्वीकार करूंगा। बीटीडब्ल्यू, एक सवाल - मैंने कल सोचा था कि प्रत्येक पृष्ठ में jQuery शामिल होना वास्तव में एक समस्या नहीं हो सकता है, क्योंकि किसी वेबपृष्ठ के वास्तविक संसाधनों के विपरीत इसे डाउनलोड नहीं करना पड़ता है। यह देखते हुए कि वेबपृष्ठ का औसत आकार 1 एमबी (जैसा कि मैंने ऑनलाइन पढ़ा है) के करीब आ रहा है, स्मृति खपत में वृद्धि मुझे एक समस्या का अधिक नहीं होना चाहिए। क्या यह समझ में आता है? –

उत्तर

9

सामग्री स्क्रिप्ट कृपया विस्तार से बताएं या तो वस्तुओं।

क्रोम chrome.runtime.sendMessage + .onMessage के माध्यम से सामग्री स्क्रिप्ट और/या पृष्ठभूमि पृष्ठ के बीच संचार का समर्थन करता है। चूंकि सभी संदेश JSON-serialized हैं, जावास्क्रिप्ट ऑब्जेक्ट को इस तरह से अन्य संदर्भों में "लीक" नहीं किया जा सकता है।

तो: नहीं, आप jQuery जैसे ऑब्जेक्ट्स (सामग्री स्क्रिप्ट्स) के साथ अन्य टैब साझा नहीं कर सकते हैं।

1

Content Scripts की Execution environment सुनिश्चित सामग्री स्क्रिप्ट आपस में संवाद कर सकते हैं

पूर्व:

"content_scripts": [ 
    { 
     "matches": ["<all_urls>"], 
     "js": ["myscript.js","myscript1.js"] 
    } 
    ] 
} 

एक Individual DOM Environment जहां सामग्री स्क्रिप्ट इंजेक्शन ["myscript.js","myscript1.js"] सुनिश्चित myscript1.js सभी सामग्री को (कार्य, चर) की पहुंच है myscript.js का, लेकिन यह दो Individual DOM Environment से संचारित हो रहा है।

कहा करने के बाद कि, क्या सीमा \ आवश्यकता आप Content Scripts जो जहां message passing जरूरतों background pagesDOM of injected pages का उपयोग करने की आवश्यकता के लिए कहता है में देखते हैं?

एक दूसरे जावास्क्रिप्ट को पहुँच नहीं है अलग टैब में

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