2013-04-10 51 views
3

这是使用显示文本在我的扩展图标background.js是否有可能在page扩展的chrome扩展中设置BadgeText?

chrome.pageAction.setBadgeText IM({“文”:“3”})

但它显示错误对象#没有方法setBadgeText。

+0

页面操作不支持徽章文本。您是否考虑过使用[浏览器操作](http://developer.chrome.com/extensions/browserAction.html)? – BeardFist 2013-04-10 06:03:12

+0

是的,你是对的Page Page Actions不支持徽章文本。我用画布获得了类似的效果。 – vishu 2013-04-10 09:15:35

回答

5

我已经使用画布功能来获得相同的结果。这里是我使用的代码。

window.setInterval(function() { 
    chrome.pageAction.setIcon({imageData: draw(10, 0), tabId: tabId}); 
}, 1000); 

function draw(starty, startx) { 
    var canvas = document.getElementById('canvas'); 
    var context = canvas.getContext('2d'); 
    var img = new Image(); 
    img.src = "icon_16.png" 
    img.onload = function() { 
     context.drawImage(img,0,2); 
    } 
    //context.clearRect(0, 0, canvas.width, canvas.height); 
    context.fillStyle = "rgba(255,0,0,1)"; 
    context.fillRect(startx % 19, starty % 19, 10, 10); 
    context.fillStyle = "white"; 
    context.font = "11px Arial"; 
    context.fillText("3",0,19); 
    return context.getImageData(0, 0, 19, 19); 
} 

在这里你可以改变你想显示的文本的位置和颜色。

+0

我试图使用你的代码,但它说“Uncaught TypeError:不能调用方法getContext'为null”。也许我必须在使用这段代码之前做一些事情? F.E.创建画布元素? – 2014-01-09 12:27:06

+0

只为未来的读者,解决方案失踪的画布问题在这里:http://stackoverflow.com/questions/21020531/chrome-setbadgetext-on-pageaction – 2014-12-16 01:08:29

0

有传言说,你可以使用chrome.browserAction.setBadgeText在页面动作上设置一个徽章。由于您只能在扩展程序中使用页面操作或浏览器操作,因此如果您选择前者,则此方法将作用于页面操作,即使它是browserAction API的一部分。

+1

想要听到任何人谁实际证实了这种谣言。在我的机器中,在使用pageAction的情况下,没有chrome.browserAction.setBadgeText这样的方法,显然这个问题也是出于这个原因。 – 2014-12-16 00:56:17

0

不,这是不可能的页面动作

但它有可能与浏览器操作。

摘录:

page action docs

Parts of the UI Like browser actions, page actions can have an icon, a tooltip, and popup; they can't have badges, however. In addition, page actions can be grayed out. You can find information about icons, tooltips, and popups by reading about the browser action UI.

你可以做的是另一种具有包含在图像中的徽章,以取代当前图像。