5

Bir krom uzantısı yapıyorum ve uzantının iki modu var: her zaman açık (alwaysOn) veya yalnızca kullanıcı tıkladığında (onClick). Kullanıcının moduna bağlı olarak mavi veya kırmızı olacak simgeyi değiştirmek istiyorum, böylece bir bakışta görebilirler. Ancak, chrome.browserAction.setIcon() satırını ekledikten sonra, simge gerektiğinde hala değişmez. Sadece varsayılan logoda kalır. Başkachrome.browserAction.setIcon hiçbir şey yapmıyor

// 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){}); 
      }); 
     } 
     }); 
    } 
}); 

Herşey mükemmel çalışır ve console.log() hataları göstermiyor:

İşte benim background.js olduğunu. Javascript'in bu özel kod satırlarını "atlatması" için herhangi bir sebep var mı? ("Bu özel kod satırları" chrome.browserAction.setIcon({path: "blue-logo.png"}); ve chrome.browserAction.setIcon({path: "red-logo.png"});'dur) Söz konusu görüntüler benim background.js, content_script.js, vb. Ile aynı klasördedir. Bu yüzden, yolun sadece yanlış okunup okunmadığından emin değilim. .

DÜZENLEME: Konsolu açtım ve "browserAction.setIcon: Simge geçersizken" unchecked runtime.lastError iletisini alıyorum. Ne anlama geliyor? C: \ Users ... \ blue-logo'dan başlayarak tam yolu belirtirseniz, hata iletisini bulamıyorum.

cevap

10

Nedenini bilmiyorum, ancak setIcon işlevini simge ile kullanamazsınız. 190px genişlik ve yükseklik daha büyük.

bilmiyorum Bug veya özellik. Belgeler

tuhaf bir şeydir

, manifest.json dosyasında aynı simgeyi kullanabilirsiniz ... bize söylemiyorsun .

+2

... önerilen boyut 128x128px olduğunu/manifest/icons – wodka

+1

Bu büyük upvotes olmalı :) – SuperNOVA

2

Kodunuz gayet iyi!

o çalışması için, Simge boyutları Resmi belgelerin üzerinde önerildiği şekilde, 48x48 veya 128x128 px, 16x16 olmalıdır: https://developer.chrome.com/extensions: benim için de çalıştı simgeleri yeniden boyutlandırma

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

+0

Bu soru – RaphaMex

+0

O'nun kodu iyiydi cevap vermedi. Simge boyutları nedeniyle çoğaltılmıyordu. Lütfen reddetmenizi öneririz. – Rimo

+0

Tamam, daha yakından bakın. Cevabınızda yeni bir şey yok, çünkü @wodka zaten söyledi. Şerefe. – RaphaMex