2

Comment puis-je activer/désactiver l'icône de mon extension dans l'action du navigateur?Activer/désactiver l'icône lorsque l'action du navigateur clique sur

manifest.json

{ 

    "manifest_version": 2, 
    "name": "Toggle Icon", 
    "description": "Toggle browser action Icon", 
    "version": "1.0", 
    "homepage_url": "https://www.stackoverflow.com/", 
    "icons": { 
    "48": "icons/message-48.png" 
    }, 


    "background": { 
    "scripts": ["background.js"] 
    }, 

    "permissions": [ 
    "tabs" 
    ], 

    "browser_action": { 
    "default_icon": "icons/off.svg", 
    "default_title": "ON" 
    }, 

    "content_scripts": [ 
    { 
     "matches": ["http://localhost/*"], 
     "js": ["content-script.js"] 
    } 
    ] 

} 

background.js

browser.browserAction.setIcon({ 
    path: { 
    19: "icons/on.svg", 
    38: "icons/on.svg" 
    } 
}); 

off.svg - off.svg
on.svg - on.svg

Maintenant le code ci-dessus bascule automatiquement l'icône de 'off.svg' à 'on.svg' dès que je charge mon extension dans le navigateur. Comment puis-je configurer la même chose sur l'icône du navigateur?

Répondre

1

Probablement quelque chose comme ceci:

let isEnabled = true 
browser.browserAction.onClicked.addListener((tab) => { 
    isEnabled = !isEnabled 
    if (isEnabled) { 
     browser.browserAction.setIcon({ 
      path: { 
       19: "icons/on.svg", 
       38: "icons/on.svg" 
      } 
     }); 
    } else { 
     browser.browserAction.setIcon({ 
      path: { 
       19: "icons/off.svg", 
       38: "icons/off.svg" 
      } 
     }); 
    } 
}) 

(non testé)

S'il vous plaît noter qu'en utilisant l'action du navigateur comme une bascule, vous ne pouvez pas avoir une action navigateur pop-up plus. Dans le cas où vous avez besoin d'un tel popup, pensez à placer un bouton bascule dans le popup.

+0

Cela a fonctionné. !! :) Merci également pour le partage des connaissances concernant la fenêtre d'action du navigateur. – Dexter