5

Sto facendo un'estensione di cromo, e l'estensione ha due modalità: sempre attiva (alwaysOn), o solo quando l'utente fa clic su di esso (onClick). Voglio cambiare l'icona in blu o in rosso a seconda della modalità dell'utente, in modo che possano vederla a colpo d'occhio. Tuttavia, dopo aver aggiunto la riga chrome.browserAction.setIcon(), l'icona continua a non cambiare quando necessario. Rimane solo sul logo predefinito.chrome.browserAction.setIcon non sta facendo nulla

Ecco il mio background.js:

// Get the behavior of the plugin; the default is set to "onClick", the other option is "alwaysOn" 
chrome.storage.sync.get({ 
    extensionBehavior: 'onClick' 
}, function(items) { 
    if(items.extensionBehavior == 'onClick'){ 
     chrome.browserAction.setIcon({path: "blue-logo.png"}); 
     chrome.browserAction.onClicked.addListener(function() { 
     // When the extension icon is clicked, send a message to the content script 
     chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { 
      chrome.tabs.sendMessage(tabs[0].id, {"message": tabs[0].url}, function(response){}); 
     }); 
     }); 
    } 
    else { 
     chrome.browserAction.setIcon({path: "red-logo.png"}); 
     chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {   
     if (changeInfo.status == 'complete') { 
      // When the HTML loads, send a message to the content script 
      chrome.tabs.query({active: true, currentWindow: true}, function(tabs){ 
      chrome.tabs.sendMessage(tabs[0].id, {"message": tabs[0].url}, function(response){}); 
      }); 
     } 
     }); 
    } 
}); 

Tutto il resto funziona perfettamente, e il console.log() non mostra alcun errore. C'è qualche ragione per cui javascript "salterebbe" su queste particolari linee di codice? ("Queste particolari righe di codice" sono chrome.browserAction.setIcon({path: "blue-logo.png"}); e chrome.browserAction.setIcon({path: "red-logo.png"});) Le immagini in questione si trovano nella stessa cartella del mio background.js, content_script.js, ecc. Quindi non sono sicuro se il percorso è stato appena letto errato o cosa .

MODIFICA: ho aperto la console e ho ricevuto il messaggio "Unchecked runtime.lastError durante l'esecuzione di browserAction.setIcon: Icona non valida." Cosa significa questo? Se si specifica il percorso completo a partire da C: \ Users ... \ blue-logo "Non riesco a trovare il messaggio di errore

risposta

10

Non so perché, ma non è possibile utilizzare la funzione setIcon con icona più grande di 190px di larghezza e altezza.

bug o funzionalità non so. la documentazione non ci dicono ...

la cosa strana è, è possibile utilizzare la stessa icona nel file manifest.json .

+2

il ridimensionamento delle icone lavorato anche per me ... consigliato è 128x128px: https://developer.chrome.com/extensions/manifest/icons – wodka

+1

Questo dovrebbe avere enormi upvotes :) – SuperNOVA

2

Il codice va bene!

per farlo funzionare, le dimensioni delle icone dovrebbe 16x16, 48x48 o 128x128 px, come raccomandato nella documentazione ufficiale: dimensioni

https://developer.chrome.com/extensions/manifest/icons

+0

Questo non risponde alla domanda – RaphaMex

+0

Il suo codice andava bene. L'icona non è stata riprodotta a causa delle sue dimensioni. Si prega di rivedere il downvote. – Rimo

+0

OK l'ho guardato più da vicino. Nulla di nuovo nella tua risposta, dato che @wodka lo ha già detto. Saluti. – RaphaMex