2011-08-23 11 views
44

मैं क्रोम एक्सटेंशन कैसे लिखूं जैसे हर बार कोई उपयोगकर्ता आइकन पर क्लिक करता है, मेरी स्क्रिप्ट चलती है लेकिन कोई पॉपअप खोला नहीं जाता है? (मैं इसे स्वयं दस्तावेज़ों में देखता हूं लेकिन किसी भी कारण से उन्होंने अचानक काम करना बंद कर दिया, प्रत्येक पृष्ठ को 404 करना, जैसा कि मुझे इस बिंदु पर मिला)।हर बार क्रोम एक्सटेंशन आइकन पर क्लिक किया गया क्रोम एक्सटेंशन आइकन

मुझे लगता है कि यह सिर्फ मैनिफेस्ट को सही तरीके से स्थापित कर रहा है। प्रकट की अपनी browser_action अनुभाग से

{ 
    "name": "My Extension", 
    "version": "0.1", 
    "description": "Does some simple stuff", 
    "browser_action": { 
    "popup" : "mine.html", 
    "default_icon": "logo.png" 
    }, 
    "permissions": [ 
    "notifications" 
    ] 
} 

उत्तर

57

निकालें पॉपअप और पृष्ठभूमि लिपि में browser Action के साथ background pages का उपयोग करें: यहाँ मैं अब है।

chrome.browserAction.onClicked.addListener(function(tab) { alert('icon clicked')}); 
+7

मैं इसे कहां रखूं। Mine.html के बिना एक्सटेंशन में एकमात्र फ़ाइल मेनिफेस्ट है ... अच्छा, और आइकन। – Endophage

+2

पृष्ठभूमि पृष्ठों पर एक नज़र डालें - http://code.google.com/chrome/extensions/background_pages.html। वह जगह जहां आप अपना लंबा चलने वाला कोड और कोड डालते हैं जो विभिन्न पृष्ठों पर आम है। ऊपर दिए गए दस्तावेज़ के लिंक में ब्राउज़र एक्शन के साथ एक उदाहरण है। क्लिक किया गया – arunkumar

+0

आह मिला। मैंने शुरुआत में पृष्ठभूमि पृष्ठ की कोशिश की लेकिन ब्राउजरएक्शन.ऑनक्टेड के बारे में पता नहीं था। – Endophage

4
इसके बजाय एक पॉपअप पेज को निर्दिष्ट करने के

, chrome.browserAction.onClicked एपीआई का उपयोग, here प्रलेखित।

32

सबसे पहले, यदि आप पॉपअप दिखाना नहीं चाहते हैं, तो को अपने manifest.json से हटाएं (आपके प्रश्न में दिखाया गया है)।

आपका manifest.json कुछ इस तरह दिखेगा:

{ 
    "name": "My Extension", 
    "version": "0.1", 
    "manifest_version" : 2, 
    "description": "Does some simple stuff", 
    "background" : { 
    "scripts" : ["background.js"] 
    }, 
    "browser_action": { 
    "default_icon": "logo .png" 
    }, 
    "permissions": ["activeTab"] 
} 
  • ध्यान दें कि manifest_version वहाँ होना चाहिए और यह 2 होना चाहिए।
  • ध्यान दें कि activeTab अनुमति जोड़ा गया है।
  • ध्यान दें कि ब्राउज़र क्रिया बटन क्लिक होने पर आप केवल एक ही काम कर सकते हैं: या तो आप एक पॉपअप दिखा सकते हैं, या आप एक स्क्रिप्ट निष्पादित कर सकते हैं, लेकिन आप दोनों नहीं कर सकते हैं।

दूसरा, एक स्क्रिप्ट जब आइकन क्लिक किया जाता है निष्पादित करने के लिए, नीचे दिए गए कोड अपने background.js फ़ाइल में जगह (फ़ाइल नाम अपने manifest.json में निर्दिष्ट किया जाता):

chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.tabs.executeScript(null, {file: "testScript.js"}); 
}); 

अंत में, testScript.js जगह है जहाँ आप चाहिए जब आइकन क्लिक किया जाता है तो कोड को निष्पादित करना चाहते हैं।

+1

एकमात्र तरीका जो सही तरीके से काम करता है। धन्यवाद – myh34d

+3

फरवरी 2017 तक, यह समाधान मूल प्रश्न में जो पूछा गया था उसे पूरा करता है। – mjamore

+0

मैं "testScript.js" पर टैब जानकारी कैसे पास करूं? – kerzek

0

यह वही था जो मुझे चाहिए था, लेकिन मुझे यह जोड़ना चाहिए: यदि आपको केवल एक बार की आवश्यकता है जैसे उपयोगकर्ता एक्सटेंशन के आइकन पर क्लिक करता है, तो पृष्ठभूमि पृष्ठ संसाधनों की बर्बादी है क्योंकि यह दौड़ जाएगा पृष्ठभूमि हर समय। इसके बजाय इवेंट पेज का उपयोग करें:

"background": { 
     "scripts": ["script.js"], 
     "persistent": false 
     } 
संबंधित मुद्दे