0

Ich entwickle eine Chrome-Erweiterung, die versucht, alle ausgewählten Texte auf einer Seite zu sammeln. Ich habe ein Inhaltsskript verwendet, um den ausgewählten Text abzufangen und ihn an popup.js zu übergeben, ihn an ein Array anzuhängen und ihn dann in popup.html anzuzeigen, so dass jedes Mal, wenn die Benutzer auf das Popup klicken, angezeigt wird, was sie ausgewählt haben.Werden Variablenwerte in popup.js in Chrome-Erweiterungen aktualisiert?

Immer wenn ich etwas auswähle, zeigt popup.html es an, aber alle Texte, die ich vorher ausgewählt habe, sind alle weg. Und das Array behält immer die Länge von 1. Was mich denken lässt, wenn die Popup-Seite jedes Mal aktualisiert wird, wenn Sie darauf klicken.

Ich konnte es nicht herausfinden, also würden Sie mir helfen? Was ich wissen möchte ist: Wenn das Popup bei jedem Klick aktualisiert wird, wie soll ich die Variablen speichern? wenn nicht, wenn was ist mein Problem.

Mein popup.js Code ist als unten:

var totalSelection = []; 
var selectionDisplay = ''; 

if (chrome.extension.getBackgroundPage().newSelectedText !== undefined) { 
    text = chrome.extension.getBackgroundPage().newSelectedText; 
    addTextInArray(text); 
    addTextToPopup(); 
    if (totalSelection.length > 1) 
     console.log("length: " + totalSelection.length.toString() + "\n" + totalSelection.toString()); 
} 

function addTextInArray(message) { 
    totalSelection.push(message); 
    selectionDisplay += "<p>" + message + "</p>"; 
} 

function addTextToPopup() { 
    document.getElementById("container2").innerHTML = selectionDisplay; 
} 

vielen Dank im Voraus!

Antwort

1

Popup-Seiten werden jedes Mal aktualisiert, wenn Sie sie erneut öffnen. Sie sind nur html Dateien. Es gibt keinen Grund dafür, dass sie im Hintergrund geöffnet bleiben (Sie haben background pages dafür).

Sie könnten einer der folgenden Aktionen:

  • Verwenden storage, für die müssen Sie eine zusätzliche Erlaubnis, Ihre manifest.json Datei hinzuzufügen.
  • Speichern Sie Ihre Array im Hintergrund Skript und messaging verwenden, um die Daten

Hinweis weitergeben müssen: Pass auf, wenn von den Benutzern sensible Daten zu sammeln. Google hat diesbezüglich eine strikte Richtlinie. Wenn Sie Ihre Erweiterungen veröffentlichen möchten, sollten Sie dem Nutzer klarstellen, dass Sie Daten erfassen. Stellen Sie außerdem sicher, dass Sie mit single purpose policy konform sind.

+1

Ich glaube, Sie könnten auch [localstorage] (https://developer.mozilla.org/en/docs/Web/API/Window/localStorage) auch dafür verwenden, es wäre einfacher als 'chrome.storage' –

+1

Hey vielen Dank @ Transcendental @NoamHacker so viel für die Antworten. Ich schätze es. –

+0

Eine Frage dazu: Wenn ich "chrome.storage" zum Speichern von Variablen verwenden möchte, kann ich die Variablen aus jeder Skriptdatei mit der Erweiterung (z. B. popup.js, background.js, contentScript.js) setzen und abrufen? Egal, welche Variable von welchem ​​Skript definiert wird, sobald sie sich in "chrome.storage" befindet, ist sie für jedes Dateirecht verfügbar. –

Verwandte Themen