2015-05-09 8 views
7

Używam chrome.browserAction.setBadgeText, aby dodać znaczek do ikony przeglądarki mojego rozszerzenia, która pokazuje liczbę nieukończonych zadań na liście zadań użytkownika.Jak mogę usunąć znaczek akcji przeglądarki?

The badge when the user has tasks

W momencie, gdy użytkownik ma zerowe zadania skończę z tym:

The badge when the user has zero tasks

Jednak co wolałbym to nie pokazać odznakę w ogóle, gdy użytkownik ma zero zadań.

Oto mój kod:

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' 
    }); 

}; 

Metoda ta jest uruchamiany za każdym razem zadania są sprawdzane wyłączyć lub dodane, tak że aktualizacje w czasie rzeczywistym.

Co byłoby idealne, to coś w stylu chrome.browserAction.clearBadge, które mogę uruchomić, gdy liczba zadań wynosi 0, aby usunąć znaczek.

Odpowiedz

1

Byłeś blisko. Chcesz przekazać pusty ciąg znaków, jednak Twój test if (task_count === 0) nigdy nie będzie prawdziwy, ponieważ używasz === zamiast ==. Liczba zadań jest ciągiem, zatem nigdy === 0 (liczba).
można łatwo znaleźć ten problem za pomocą debugera chrome. Punkt przerwania w tym if nigdy nie trafiłby tak, abyś jechnął hmmmm i zobaczył.

+0

Ah, interesujące. Tak więc kompiluję to z Coffeescript, a Coffeescript mówi "używaj zawsze ===" podczas kompilacji do JavaScript. Nie sądzę, że znasz sposób, w jaki mogę zmusić Coffeescript do kompilacji do == zamiast tego? –

+0

Użyj '===" 0 "', aby nadal używać tego –

+0

Awesome, który działał i ma sens. Dziękuję Ci! –

Powiązane problemy