5

Я делаю расширение chrome, а расширение имеет два режима: всегда включено (alwaysOn) или только когда пользователь нажимает на него (onClick). Я хочу, чтобы значок был синим или красным в зависимости от режима пользователя, поэтому они могут увидеть его с первого взгляда. Однако после добавления строки chrome.browserAction.setIcon() значок по-прежнему не изменяется, когда это необходимо. Он просто остается на логотипе по умолчанию.chrome.browserAction.setIcon ничего не делает

Вот мои 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){}); 
      }); 
     } 
     }); 
    } 
}); 

Все остальное прекрасно работает, и console.log() не показывает каких-либо ошибок. Есть ли какая-нибудь причина, по которой javascript будет «пропускать» эти конкретные строки кода? («Эти конкретные строки кода» являются chrome.browserAction.setIcon({path: "blue-logo.png"}); и chrome.browserAction.setIcon({path: "red-logo.png"});). Изображения, о которых идет речь, находятся в той же папке, что и мои background.js, content_script.js и т. Д., Поэтому я не уверен, что путь просто читается неправильно или что ,

EDIT: Я открыл консоль и получил сообщение «Unchecked runtime.lastError при запуске браузераAction.setIcon: значок недействителен». Что это значит? Если я укажу полный путь, начиная с C: \ Users ... \ blue-logo «Я не могу найти сообщение об ошибке.

ответ

10

Я не знаю почему, но вы не можете использовать функцию setIcon с иконкой больше, чем 190px ширины и высоты.

ошибка или особенность я не знаю. Документы не говорят нам ...

странная вещь, вы можете использовать один и тот же значок в файле manifest.json .

+2

изменения размера значков работали для меня, как хорошо ... рекомендуемого размера 128x128px: https://developer.chrome.com/extensions/manifest/icons – wodka

+1

Это должно иметь огромные upvotes :) – SuperNOVA

2

Ваш код хорошо!

для того, чтобы работать, размеры иконок должен 16x16, 48x48 или 128x128 точек, в соответствии с рекомендациями по официальной документации:

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

+0

Это не ответит на вопрос – RaphaMex

+0

Он код был в порядке. Из-за его размеров значок не воспроизводился. Пожалуйста, просмотрите информацию внизу. – Rimo

+0

ОК внимательно посмотрел на него. Ничего нового в вашем ответе, потому что @wodka сказал это уже. Приветствия. – RaphaMex

Смежные вопросы