2011-06-12 17 views
11

में पृष्ठभूमि पृष्ठ और पॉपअप पृष्ठ के बीच संचार मैं वर्तमान में Google क्रोम के लिए एक एक्सटेंशन लिखने की कोशिश कर रहा हूं, जिसका उपयोग फ़ाइलों को अपलोड करने के लिए किया जा सकता है।क्रोम एक्सटेंशन

दो पृष्ठ हैं: पृष्ठभूमि पृष्ठ और पॉपअप पृष्ठ। पॉपअप पृष्ठ तब प्रकट होता है जब आप ओमनी-बार के आइकन पर क्लिक करते हैं। आप उस मानक फ़ाइल को निर्दिष्ट कर सकते हैं जिसे आप मानक HTML <input type='file' ... /> का उपयोग करके अपलोड करना चाहते हैं।

फ़ाइल का चयन करने के बाद, और "अपलोड करें" पर क्लिक करने के बाद, फ़ाइल का नाम (+ पथ) पृष्ठभूमि पृष्ठ पर भेजा जाना चाहिए। यह, क्योंकि पॉपअप को उपयोगकर्ता द्वारा स्क्रीन पर कहीं और क्लिक करके बंद किया जा सकता है, जो पृष्ठ को बंद करता है।

जब पॉपअप सक्रिय होता है, और पृष्ठभूमि पृष्ठ सर्वर पर फ़ाइल अपलोड कर रहा है, तो पॉपअप को पृष्ठभूमि पृष्ठ से अपलोड करने (0-100%) की प्रगति को भी प्राप्त करना चाहिए, और यह जानकारी प्रदर्शित करना चाहिए। समाप्त होने पर, उपयोगकर्ता को यूआरएल देखना चाहिए।

समस्या यह है कि, मुझे नहीं पता कि इन दो पृष्ठों के बीच संवाद कैसे करें। दस्तावेज यह कैसे काम करता है इस बारे में बहुत स्पष्ट नहीं है। एक बात मैं कोशिश की है, पृष्ठभूमि पृष्ठ पर एक समारोह, upload(filename) कहा जाता है बना रही है, और पॉपअप पेज में इस कोड डाल:

var BGPage = chrome.extension.getBackgroundPage(); 
BGPage.upload(the_filename); 

लेकिन यह काम नहीं किया, समारोह आमंत्रित नहीं किया गया।

क्या कोई जानता है कि मैं पॉपअप पेज से फ़ाइल पेज पर फ़ाइल नाम कैसे भेज सकता हूं, और पॉपअप पेज के माध्यम से पृष्ठभूमि पृष्ठ से अपलोड स्थिति (और अंततः लिंक) कैसे प्राप्त कर सकता हूं?

अग्रिम धन्यवाद!

+0

क्या आपने मेनिफेस्ट में पृष्ठभूमि पृष्ठ घोषित किया है? क्या आप वाकई पृष्ठभूमि कार्य नहीं कह रहे हैं? क्या आपने त्रुटियों के लिए कंसोल की जांच की है? – serg

+0

हां, मैंने मैनिफेस्ट में पृष्ठभूमि पृष्ठ घोषित किया; मुझे यकीन है कि पृष्ठभूमि फ़ंक्शन को कॉल नहीं किया गया है, क्योंकि मैंने लाइन से शुरुआत की है: अलर्ट ("यह काम करता है!") ;, और एक कोशिश-पकड़ रिटर्न 'अपरिभाषित' है। –

+0

आपके द्वारा प्रदान किया गया कोड में कोई त्रुटि नहीं है, इसलिए यह कहीं और जगह है जहां आपने नहीं दिखाया था। – serg

उत्तर

14

इसे एक चर के रूप में परिभाषित करें।

background.js

upload = function(fileName) { 
    console.log('Uploading', fileName); 
} 

popup.html

<script src="popup.js"></script> 

popup.js

var BGPage = chrome.extension.getBackgroundPage(); 
BGPage.upload(the_filename); 

यही काम करना चाहिए। यदि ऐसा नहीं होता है, तो पॉपअप और पृष्ठभूमि पृष्ठ के लिए अपने निरीक्षक की जाँच करें:

  • पॉपअप इंस्पेक्टर: सही पॉपअप पर क्लिक करें और निरीक्षण
  • पृष्ठभूमि इंस्पेक्टर आपकी एक्सटेंशन सेटिंग पेज क्रोम में चुनें: // एक्सटेंशन, डेवलपर मोड चालू करें (ऊपर दाईं ओर जांचें), और background.js पर क्लिक करें।

यह इंस्पेक्टर खोल देगा, फिर कंसोल में त्रुटि संदेश देखने के लिए कंसोल पर क्लिक करें, जो मैंने ऊपर बताया है, काम करने के लिए मुझे यह करना चाहिए, मैं इसे हर समय करता हूं।

+2

मैनिफेस्ट v2 में नोट में आपके पास इनलाइन स्क्रिप्ट नहीं हो सकती हैं, इसलिए उस पॉपअप.जेएस में उस कोड को डालें और का उपयोग करके इसे अपने popup.html – captainclam

+0

में उपयोग करें @captainclam ने उत्तर को अपडेट किया वी 2 मैनिफेस्ट के लिए –

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