Extension Chrome: Exécution de la page d'arrière-plan qu'une seule fois lorsque google chrome commence
Je suis à jouer avec les extensions de chrome, mon manifeste charge un fond de page avec:
...
"background": { "scripts": ["background_page.js"], "persistent": false },
...
L' .js code ressemble à ceci:
var once = false;
window.addEventListener("load", function () {
if ( once == true ) { return; }
alert( 'test' );
once = true;
}, false);
Cela semble fonctionne très bien, mais je veux lancer le background_page.js code qu'une seule fois à chaque fois que le navigateur démarre.
Droit maintenant, je ne suis pas sûr pourquoi, mais le code est exécuté plus d'une fois. Au début, je pensais que c'était d'être exécuté à chaque fois que j'ouvre un nouvel onglet, mais ce n'est pas le cas. L'alerte ne s'affiche une fois que je démarre le navigateur, puis si j'ouvre un nouvel onglet rapidement l'alerte wont apparaître, mais si j'attends environ 1 minute et ouvrir un nouvel onglet, puis le message d'alerte s'affiche à nouveau.
Comment puis-je m'assurer que le background_page.js le code s'exécute une seule fois à chaque fois que le navigateur démarre?
Vous devez vous connecter pour publier un commentaire.
Ce que vous utilisez est un Page Événement(background_page.js). Des pages d'événements sont déchargés lorsque le navigateur détecte que la page n'est pas de faire quoi que ce soit. Donc ce qui se passe est que lorsque vous ouvrez un nouvel onglet, la page de l'Événement est en train d'être rechargé et commence à s'exécuter à partir du haut de nouveau. De cette façon, chrome est en mesure d'avoir votre application utilise moins de mémoire et la vitesse du navigateur.
Si vous voulez résoudre le problème simplement utiliser
persistent:true
qui sera assurez-vous que la page "persiste" indéfiniment ou jusqu'à ce que l'utilisateur ferme le navigateur. Si vous voulez vraiment garder votre application efficace de la mémoire, vous devriez jeter un oeil à laruntime.onSuspend
méthode qui est appelée à chaque fois que la page de votre Événement décharge. De cette façon, vous pouvez enregistrer des trucs avant que la page est déchargé de sorte que vous pouvez reprendre là où vous l'avez laissé.Mise à JOUR: Selon actuel de la documentation vous avez simplement à supprimer le "persistante" clé (pas besoin de le changer à
"persistent": true
)....
C'est un page événement:
...
C'est un page d'arrière-plan: