5

मैं क्रोम एक्सटेंशन बना रहा हूं, और एक्सटेंशन में दो मोड हैं: हमेशा (alwaysOn) पर, या केवल जब उपयोगकर्ता इसे क्लिक करता है (onClick)। मैं उपयोगकर्ता के मोड के आधार पर आइकन को नीला या लाल रंग में बदलना चाहता हूं, इसलिए वे इसे एक नज़र में देख सकते हैं। हालांकि, chrome.browserAction.setIcon() लाइन जोड़ने के बाद, जब भी इसकी आवश्यकता होती है तो आइकन अभी भी नहीं बदलता है। यह सिर्फ डिफ़ॉल्ट लोगो पर रहता है।chrome.browserAction.setIcon कुछ भी नहीं कर रहा है

// Get the behavior of the plugin; the default is set to "onClick", the other option is "alwaysOn" 
chrome.storage.sync.get({ 
    extensionBehavior: 'onClick' 
}, function(items) { 
    if(items.extensionBehavior == 'onClick'){ 
     chrome.browserAction.setIcon({path: "blue-logo.png"}); 
     chrome.browserAction.onClicked.addListener(function() { 
     // When the extension icon is clicked, send a message to the content script 
     chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { 
      chrome.tabs.sendMessage(tabs[0].id, {"message": tabs[0].url}, function(response){}); 
     }); 
     }); 
    } 
    else { 
     chrome.browserAction.setIcon({path: "red-logo.png"}); 
     chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {   
     if (changeInfo.status == 'complete') { 
      // When the HTML loads, send a message to the content script 
      chrome.tabs.query({active: true, currentWindow: true}, function(tabs){ 
      chrome.tabs.sendMessage(tabs[0].id, {"message": tabs[0].url}, function(response){}); 
      }); 
     } 
     }); 
    } 
}); 

बाकी सब कुछ पूरी तरह से चलाता है, और console.log() किसी भी त्रुटि प्रदर्शित नहीं करता है:

यहाँ मेरी background.js है। क्या कोई कारण जावास्क्रिप्ट कोड की इन विशेष पंक्तियों को "छोड़ना" होगा? ("कोड की ये विशेष पंक्तियां" chrome.browserAction.setIcon({path: "blue-logo.png"}); और chrome.browserAction.setIcon({path: "red-logo.png"});) प्रश्न में छवियां मेरी पृष्ठभूमि.जेएस, content_script.js, आदि के समान फ़ोल्डर में हैं इसलिए मुझे यकीन नहीं है कि पथ को गलत पढ़ा जा रहा है या क्या ।

संपादित करें: मैंने कंसोल खोला और मुझे संदेश "अनचेक रनटाइम .lastError ब्राउज़र चलाते समय एक्शन.सेट आइकन: आइकन अमान्य।" इसका क्या मतलब है? यदि मैं सी: \ उपयोगकर्ता ... \ blue-logo से शुरू होने वाला पूरा पथ निर्दिष्ट करता हूं "मुझे त्रुटि संदेश नहीं मिला।

उत्तर

10

मुझे नहीं पता क्यों, लेकिन आप आइकन के साथ setIcon फ़ंक्शन का उपयोग नहीं कर सकते 190px चौड़ाई और ऊंचाई से भी बड़ा।

बग या सुविधा मैं नहीं जानता। प्रलेखन हमें बताओ नहीं है ...

अजीब बात है, तो आप manifest.json फ़ाइल में एक ही चिह्न का उपयोग कर सकते हैं ।

+2

आइकन के रूप में अच्छी तरह से मेरे लिए काम किया आकार बदलने ... अनुशंसित आकार है 128x128px: https://developer.chrome.com/extensions/manifest/icons – wodka

+1

इसमें भारी अपवर्त होना चाहिए :) – SuperNOVA

2

आपका कोड है, यह काम करने के लिए ठीक है!

आइकन के आयाम 16x16 चाहिए, 48x48 या 128x128 पिक्सल, के रूप में आधिकारिक दस्तावेज पर सिफारिश की:

https://developer.chrome.com/extensions/manifest/icons

+0

यह प्रश्न का उत्तर नहीं देता – RaphaMex

+0

वह कोड ठीक था। आइकन को इसके आयामों के कारण पुन: उत्पन्न नहीं किया जा रहा था। कृपया नीचे की समीक्षा करें। – Rimo

+0

ठीक है इसे एक नजदीक देखो। हालांकि, आपके जवाब में कुछ भी नया नहीं है, क्योंकि @ वोदका ने पहले ही कहा था। चीयर्स। – RaphaMex

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