J'ai un élément qui est déclaré dans le fichier Option.html et qui a été enregistré dans le stockage chrome dans Option.js. Je souhaite accéder à la valeur de cet élément afin de pouvoir l'utiliser dans mon Content.js. Un moyen possible?
J'ai essayé d'appeler l'élément par son ID dans Content.js, mais cela n'a pas fonctionné! Il donne "Impossible de lire la propriété 'valeur' de null", donc je suppose qu'il ne lit pas l'élément (car il n'est pas dans le même fichier).
Voici ce que j'ai:
Option.html:
<!DOCTYPE html>
<html>
<head><title>My Test Extension Options</title></head>
<body>
waiting time:
<select id="waitingTime">
<option value="oneMin">1 minute</option>
<option value="TwoMin">2 minutes</option>
<option value="FourMin">4 minutes</option>
<option value="FiveMin">5 minutes</option>
</select>
<div id="status"></div>
<button id="save">Save</button>
<script src="options.js"></script>
</body>
</html>
Option.js:
// Saves options to chrome.storage
function save_options() {
var color = document.getElementById('waitingTime').value;
chrome.storage.sync.set({
favoriteColor: waitingTime,
}, function() {
// Update status to let user know options were saved.
var status = document.getElementById('status');
status.textContent = 'Options saved.';
setTimeout(function() {
status.textContent = '';
}, 750);
});
}
Content.js (où j'appelle l'élément):
....
//the line I'm calling the element
var timeout = document.getElementById('waitingTime').value;
....
Manifest.json (j'ai ajouté une option ainsi qu'une autorisation):
....
"version": "1.0",
"description": "Build an Extension!",
"permissions": ["storage", "activeTab"],
"options_page": "options.html",
....
J'apprécierais si vous m'aidiez à trouver un moyen d'accéder à la valeur "waitTime" à partir du fichier content.js! (ou toute solution alternative qui sert l'objectif).
Vous avez enregistré votre valeur dans Chrome Storage à partir de options
, il vous suffit maintenant de la lire à partir de là. Parce que content script
et option
sont dans un contexte différent, tout ce que nous avons à faire est de trouver un endroit auquel ces 2 contextes peuvent se connecter, dans ce cas Chrome Storage
. Ainsi:
options.js
// Saves options to chrome.storage
function save_options() {
var color = document.getElementById('waitingTime').value;
chrome.storage.sync.set({
favoriteColor: waitingTime,
}, function() {
// Update status to let user know options were saved.
var status = document.getElementById('status');
status.textContent = 'Options saved.';
setTimeout(function() {
status.textContent = '';
}, 750);
});
}
content-script.js
chrome.storage.sync.get('favoriteColor', function(result) {
if (result && result.favoriteColor) {
// You can use it here: result.favoriteColor
}
});
Une chose que je veux mentionner est chrome.storage.sync
et chrome.storage.local
, vous le savez peut-être déjà, mais juste au cas où.
chrome.storage.sync
, synchronisez les données entre les navigateurs Chrome auxquels vous utilisez votre compte pour vous connecter pour synchroniser les données de navigation, cela a une limitation de lecture / écriture
chrome.storage.local
ne synchronisera pas les données, il stockera simplement vos données sur le navigateur dans lequel vous avez installé l'extension. Cette fonction a une limitation de taille de stockage (ne peut stocker que des 5,242,880
octets maximum ), vous pouvez lire ce document pour l'augmenter.
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots