2012-07-15 13 views
22

मैं एक क्रोम एक्सटेंशन लिख रहा हूं जो ब्राउज़र क्रिया आइकन पर क्लिक करते समय मुझे एक यूआरएल पर रीडायरेक्ट करेगा।chrome.browserAction.onClished क्यों अनिश्चित है?

मैं उपयोग करने के लिए कोशिश कर रहा हूँ:

chrome.browserAction.onClicked.addListener 

लेकिन मैं

Uncaught TypeError: Cannot read property 'onClicked' of undefined

प्राप्त यह मेरा मैनिफ़ेस्ट फ़ाइल है:

:

{ 
    "name": "first extension", 
    "version": "2.2.12", 
    "description": "redirct to a link icon", 
    "browser_action": { 
     "default_icon": "icontest.png", 
     "default_title": "Do action" 
    }, 
    "permissions": ["tabs", "http://*/*"], 
    "content_scripts": [{ 
     "matches": ["http://*.twitter.com/*", "https://*.twitter.com/*"], 
     "js": ["twterland.js"] 
    }], 
    "icons": { 
     "16": "icontest.png", 
     "48": "icontest.png", 
     "128": "icontest.png" 
    } 
} 

यह मेरा js फ़ाइल है

chrome.browserAction.onClicked.addListener(function(tab) { alert("hi"); }); 

उत्तर

15

ऐसा लगता है कि कोड आपके twterland.js फ़ाइल में है, जो आपकी सामग्री स्क्रिप्ट है। browserAction केवल एक्सटेंशन पृष्ठों में उपयोग किया जा सकता है, इसलिए आप इसे सामग्री स्क्रिप्ट में उपयोग नहीं कर सकते हैं।

दस्तावेज़: https://developer.chrome.com/extensions/content_scripts

However, content scripts have some limitations. They cannot:
- Use chrome.* APIs (except for parts of chrome.extension)
- Use variables or functions defined by their extension's pages
- Use variables or functions defined by web pages or by other content scripts

यह बजाय background page पर रखो।

25

जो लोग पहले से

"background": { 
    "scripts": ["background.js"] 
} 

और अभी भी कुछ इस तरह जोड़ लिया है के लिए हो जाता है Cannot read property 'onClicked' of undefined - बस

"browser_action": { 
    "default_icon": "icon.png" 
} 

जोड़ने अपने manifest.json

+5

यह पागल है लेकिन यह – syonip

+1

काम करता है यह वास्तव में मेरी समस्या है। मेरी लिपि पहले से ही पृष्ठभूमि थी। यह सिर्फ मैंने शुरू करने के लिए कभी भी 'ब्राउज़र_एक्शन' घोषित नहीं किया है। –

+3

'" ब्राउजर_एक्शन ": {}' पर्याप्त – Pacerier

7

में आप एक "browser_action" संपत्ति नहीं है, तो आपके manifest.json में परिभाषित किया गया है तो यह त्रुटि हो सकती है। @ किरील का उत्तर काम करता है लेकिन आपको एक खाली icon.png फ़ाइल भी जोड़ना होगा, अन्यथा क्रोम एक त्रुटि फेंक देगा कि उसे ऐसी फ़ाइल नहीं मिल सकती है।

"browser_action": {} 

कैसे "browser_action" सेटिंग का उपयोग करने पर documentation for further reference पढ़ लें:

manifest.json फ़ाइल इस दबाने चाहिए करने के लिए इस जोड़ने में त्रुटि है।

+0

मेरे पास मेरे मैनिफेस्ट में ब्राउजर_एक्शन परिभाषित है, फिर भी 'chrome.pageAction' को मेरी पृष्ठभूमि स्क्रिप्ट –

+0

@AlexanderMills में परिभाषित नहीं किया गया है। मूल प्रश्न' chrome.browserAction' के संबंध में था। मुझे 'पेज एक्शन' के बारे में निश्चित नहीं है। – Sgnl

+0

ओह मेरे बुरे, आप सही हैं –

1

मैं भी इस हो रही थी, manifest.json में मेरी पृष्ठभूमि घोषणा करने के लिए

"persistent": true 

जोड़ने इसे हल।

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