2013-12-13 7 views
5

मैं एक साधारण एक्सटेंशन बनाना चाहता हूं, जो पृष्ठभूमि से पॉपअप तक एक चर पारित कर रहा है। समस्या यह है कि, मुझे 'अपरिभाषित' प्रतिक्रिया मिलती है।क्रोम एक्सटेंशन पर पृष्ठभूमि से पॉपअप पर परिवर्तनीय पासिंग

मैनिफ़ेस्ट:

{ 
    "name": "Get var", 
    "description": "get var", 
    "version": "2.0", 
    "permissions": [ 
    "activeTab" 
    ], 
    "background": { 
    "scripts": ["background.js"], 
    "persistent": true 
    }, 
    "browser_action": { 
    "default_title": "Get that variable", 
    "default_popup": "popup.html" 
    }, 
    "manifest_version": 2 
} 

background.js

var myURL = 'aaa'; 

popup.html

<!doctype html> 
<html> 
    <head> 
    <script src="popup.js"></script> 
    </head> 
    <body> 
    </body> 
</html> 

popup.js

document.addEventListener('DOMContentLoaded', function() { 
    var bg = chrome.extension.getBackgroundPage(); 
    var myURL = bg.myURL; 
    alert(myURL) 

}); 
+0

'window.myURL = 'aaa'; 'background.js में' – rsanchez

उत्तर

-2

अंततः मुझे समस्या मिली, मैंने पृष्ठभूमि पृष्ठों को काम करने के लिए पृष्ठभूमि अनुमति की आवश्यकता है (chrome extension permissions documentation here)। तो मैंने इस तरह प्रकट किया:

{ 
    "name": "Get var", 
    "description": "get var", 
    "version": "2.0", 
    "permissions": [ 
    "activeTab,background" 
    ], 
    "background": { 
    "scripts": ["background.js"], 
    "persistent": true 
    }, 
    "browser_action": { 
    "default_title": "Get that variable", 
    "default_popup": "popup.html" 
    }, 
    "manifest_version": 2 
} 
+3

पृष्ठभूमि-पृष्ठ निश्चित रूप से ** नहीं ** ** काम करने के लिए 'पृष्ठभूमि' अनुमति की आवश्यकता है। 'पृष्ठभूमि' अनुमति एक बहुत ही अलग उद्देश्य के लिए है, जैसा कि आपने लिंक किए गए दस्तावेज में स्पष्ट रूप से बताया है: _ जब कोई भी इंस्टॉल किया गया होस्ट किया गया ऐप, पैक किया हुआ ऐप, या एक्सटेंशन में "पृष्ठभूमि" अनुमति है, तो क्रोम चलता है (जैसे ही उपयोगकर्ता लॉग इन करता है) उपयोगकर्ता ने क्रोम लॉन्च करने से पहले अपने कंप्यूटर में। "पृष्ठभूमि" अनुमति क्रोम को जारी रखती है (यहां तक ​​कि आखिरी विंडो बंद होने के बाद भी) जब तक उपयोगकर्ता स्पष्ट रूप से क्रोम छोड़ देता है ._ – gkalpak

+1

बीटीडब्ल्यू, यदि यह वही है जो आप चाहते थे (पृष्ठभूमि में चल रहे हैं), तो आपको इसका उल्लेख करना चाहिए था खुद को बचाने के लिए सवाल (और खुद) कुछ समय;) – gkalpak

+0

मैंने कुछ भी नहीं बदला लेकिन पृष्ठभूमि अनुमति जोड़ा और यह काम किया। मैं जो चाहता था उसे किसी भी तरह से काम करना था :) – Kuzgun

8

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


Btw, मैं event-pages में देख होगा सुझाव देते हैं (जैसे गैर-लगातार पृष्ठभूमि पृष्ठों) जो अधिक संसाधन के अनुकूल है। मतलब यही कारण है कि आप undefined प्राप्त है मैं किसी भी तरह से नहीं है: ध्यान रखें, कि एक घटना-पृष्ठ पर ले जाने कोड काम करने के लिए आदेश में कुछ परिवर्तन की आवश्यकता होगी:

document.addEventListener('DOMContentLoaded', function() { 
    chrome.runtime.getBackgroundPage(function (bg) { 
     var myUrl = bg.myUrl; 
     alert(myUrl); 
    }); 
}); 

नोट कि आप लगातार पृष्ठभूमि पृष्ठ का उपयोग करते हैं। आपके द्वारा पोस्ट किया गया कोड लगातार पृष्ठभूमि-पृष्ठ के साथ ठीक काम करना चाहिए - ईवेंट ईवेंट (जब भी संभव हो) का उपयोग करना बेहतर अभ्यास है।

0

मैं एक समान मुद्दे पर भाग गया; मेरी समस्या यह थी कि मैनिफेस्ट को बदलने के बाद मैंने एक्सटेंशन को फिर से लोड नहीं किया था।

मुझे लगता है कि ओपी का मुद्दा वही था।

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