Je regarde la page de documentation et je ne peux pas comprendre ce qui est incorrect dans mon code:
chrome.browserAction.setIcon({ details.imageData = { "48": "Icons/iconfavorite48x.png", "64": "Icons/iconfavorite64x.png", "128": "Icons/iconfavorite128x.png" } });
Le documentaion dit:
Notez que 'details.imageData = foo' équivaut à 'details.imageData = {' 19 ': foo}'
Donc je suis extrêmement confus
Votre code est essentiellement une grande erreur de syntaxe. Un objet JavaScript littéral s'attend à être une liste de paires de key: value
. Vous ne pouvez (et ne pas avoir besoin) d'affectations dans la partie key
.
Donc, en réglant uniquement l'erreur de syntaxe, ce sera:
// Still wrong: chrome.browserAction.setIcon({ imageData : { "48": "Icons/iconfavorite48x.png", "64": "Icons/iconfavorite64x.png", "128": "Icons/iconfavorite128x.png" } });
Cela échouera. imageData
s'attend à des imageData
binaires binaires de données de pixels obtenues, par exemple, à partir de <canvas>
. Si vous souhaitez fournir des chemins, vous devez utiliser la propriété path
:
// Still wrong: chrome.browserAction.setIcon({ path : { "48": "Icons/iconfavorite48x.png", "64": "Icons/iconfavorite64x.png", "128": "Icons/iconfavorite128x.png" } });
Notez que vous ne pouvez fournir que des tailles qu'il attend. Si vous incluez un autre, il échouera. Citation des documents:
Si le nombre de pixels d'image qui correspondent à une unité d'espace d'écran égale à l'échelle, l'image avec l'échelle de taille * 19 sera sélectionnée. Initialement, les balances 1 et 2 seront prises en charge uniquement.
Une icône de taille normale est 19×19 pixels; Sur les écrans DPI élevés, Chrome peut afficher une icône 38×38.
Mise à jour: puisque Chrome a changé en conception de matériau en 53, cela s'attend maintenant à 16×16 et 32×32. Vous pouvez fournir des tailles anciennes et nouvelles sans erreurs.
Vous pouvez donc faire ceci:
// Correct chrome.browserAction.setIcon({ path : { "19": "Icons/iconfavorite19x.png", "38": "Icons/iconfavorite38x.png" } }); // Also correct chrome.browserAction.setIcon({ path : { "19": "Icons/iconfavorite19x.png" } }); // Also correct chrome.browserAction.setIcon({ path : "Icons/iconfavorite19x.png" });
Les images ne doivent pas avoir ces dimensions, elles seront mises à l'échelle si nécessaire; Mais il est évidemment mieux d'être exact.