2015-05-09 34 views
7

我使用chrome.browserAction.setBadgeText添加徽章我的扩展的浏览器图标,显示在用户的待办事项列表未完成任务的数量。如何删除浏览器动作徽章?

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(一个数字)。
您可以使用chrome调试器轻松找到此问题。在那个if断点将永远不会打,所以你会去嗯,看到它。

+0

啊,有趣。所以我实际上是从Coffeescript中编译的,而Coffeescript在编译成JavaScript时几乎说'use === always'。我不认为你知道我可以强制Coffeescript编译为==的方式吗? –

+0

使用'===“0”'继续使用 –

+0

真棒,这很有效,也很有道理。谢谢! –