2013-04-10 86 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.

你可以做的是另一種具有包含在圖像中的徽章,以取代當前圖像。