2017-10-06 1 views
0

Est-il possible que la méthode SetBadgeText ne perde pas les chiffres de comptage? Ce que je me bats, c'est quand je clique sur un bouton et que le compteur commence à compter les nombres après ça je vais vérifier d'autres pages, parfois compter à partir de zéro, la même chose est quand je veux fermer le chrome et l'ouvrir à nouveau . Comment cela est-il possible d'enregistrer votre numéro setBadgeText actuel en mémoire et de commencer par le dernier sans le perdre?extension de setBadgeText chrome perdre des chiffres de comptage

background.js

var counter = 0; 

chrome.runtime.onMessage.addListener(message => { 
    if(message === 'clicked') { 
     counter += 1; 
     chrome.browserAction.setBadgeText({ 
      text: counter.toString() 
     }); 
    } 
}); 

contenu-script.js

document.body.addEventListener('click', e => { 
    if(e.target.matches('[value="Google Search"]')) { 
     chrome.runtime.sendMessage('clicked') 
    } 
}); 

manifest.json

{ 
    "manifest_version": 2, 
    "name": "Counter", 
    "version": "1.0", 

    "content_scripts": [ 
     { 
     "matches": ["https://*/*"], 
     "run_at": "document_end", 
     "js": ["content-script.js"] 
     } 
    ], 
    "description": "description", 

    "background": { 
     "persistent": false, 
     "scripts": ["background.js"] 

    }, 

    "browser_action": { 
     "default_title": "counter" 

    } 
} 

Répondre

1

utiliser l'API de stockage: https://developer.chrome.com/apps/storage

Le stockage "sync" est synchronisé avec n'importe quel navigateur Chrome connecté. Le stockage "local" est, euh, local.

Voici comment vous pouvez intégrer l'API de stockage dans votre exemple:

// background.js 
chrome.runtime.onMessage.addListener(message => { 
    if(message === 'clicked') { 
     chrome.storage.local.get('counter', ({counter}) => { 
      counter += 1; 
      chrome.browserAction.setBadgeText({ 
       text: counter.toString() 
      }); 
      chrome.storage.local.set('counter', counter) 
     }) 

    } 
}); 

Vous aurez aussi besoin d'ajouter le « stockage » l'autorisation de votre manifeste:

// manifest.json 
{ 
    ... 

    "browser_action": { 
     "default_title": "counter" 

    }, 

    permissions: [ 
     "storage" 
    ] 
} 
+0

Oui, mais comment cela peut être connecté avec setBadgetext? J'ai seulement trouvé des fonctions où le HTML est principalement utilisé. – Mkik

+0

Ajout d'un exemple – Sidney

+0

Merci cela devient plus clair pour moi. Votre réponse m'a été très utile. Pouvez-vous me dire quelle fonction, quelle variable dois-je utiliser pour charger les numéros de compteurs lorsque je ferme Chrome et que je veux le rallumer? – Mkik