2015-05-09 8 views
7

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

The badge when the user has tasks

पल उपयोगकर्ता शून्य कार्य मैं इस के साथ खत्म हो गया है जब से कम:

The badge when the user has zero tasks

हालांकि मैं क्या पसंद करते हैं सब पर बिल्ला नहीं दिखाने के लिए है जब उपयोगकर्ता शून्य कार्य है।

setBrowserActionBadge: function(allTasks) { 
    var task_count; 
    task_count = allTasks.filter(function(task) { 
    task.isDone === false; 
    }).length; 

    task_count = task_count.toString(); 

    if (task_count === 0) { 
    task_count = ''; 
    } 

    chrome.browserAction.setBadgeText({ 
    'text': task_count 
    }); 

    chrome.browserAction.setBadgeBackgroundColor({ 
    'color': '#333333' 
    }); 

}; 

इस विधि हर बार कार्य को बंद जाँच कर रहे हैं या जोड़ा चलाया जाता है, तो यह वास्तविक समय में अद्यतन करता है:

यहाँ मेरी कोड है।

आदर्श क्या होगा chrome.browserAction.clearBadge जैसा कि बैज को हटाने के लिए कार्य गणना 0 है जब मैं चला सकता हूं।

उत्तर

1

आप करीब थे। आप एक खाली स्ट्रिंग पास करना चाहते हैं हालांकि आपका परीक्षण if (task_count === 0) कभी भी सत्य नहीं होगा क्योंकि आप === के बजाय === का उपयोग कर रहे हैं। कार्य गणना एक स्ट्रिंग है इस प्रकार कभी नहीं === 0 (एक संख्या)।
आप क्रोम डीबगर का उपयोग कर आसानी से इस समस्या को पा सकते हैं। उस if में एक ब्रेकपॉइंट कभी हिट नहीं होगा, इसलिए आप हम्मम्म पर जाएंगे और इसे देखेंगे।

+0

आह, दिलचस्प। तो मैं वास्तव में इसे कॉफ़ीस्क्रिप्ट से संकलित कर रहा हूं, और कॉफ़ीस्क्रिप्ट बहुत अधिक है 'जावास्क्रिप्ट को संकलित करते समय' === हमेशा 'उपयोग करें। मुझे नहीं लगता कि आप इस तरीके से जानते हैं कि मैं कॉफ़ीस्क्रिप्ट को इसके बजाय == को संकलित करने के लिए मजबूर कर सकता हूं? –

+0

उस –

+0

का उपयोग जारी रखने के लिए '===" 0 "' का प्रयोग करें, जो काम करता है और समझ में आता है। धन्यवाद! –

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