如何使用存储将数据从options.js发送到content.js?

时间:2019-05-18 10:57:57

标签: javascript google-chrome-extension local-storage

我是一名JavaScript初学者,对于我的第一个项目,我以为我会写一个有用的chrome扩展,但是,我坚持如何将数据从chrome扩展选项页面发送到正在运行的javascript页面。

options.js中。 我已经成功地使用以下方法从存储中成功添加和检索值:
chrome.storage.local.set(obj)
chrome.storage.local.get(obj)
只要我在同一js文件-options.js中存储和检索,它就可以正常工作。

我已将用于从options.js中检索值的同一块复制到content.js中,但是该值在chrome js调试器中始终显示为undefined。为了我的一生,我不知道如何在options.js中设置值并在content.js中检索它

我究竟做错了什么?我不能在chrome.storage.local.set(obj)中运行options.js,然后在chrome.storage.local.get(obj)中运行content.js来提取值吗?

这是一个代码片段,向您展示我在做什么:

文本框ID为name,位于 options.js

function saveTextbox(txtboxId) {
  var theValue = document.getElementById(txtboxId).value;
  var obj = {};
  obj[txtboxId] = theValue;
  storage.set(obj);
}


content.js中:

function getValue(textboxId) {
  storage.get(textboxId, function(result) {
    return result.name;
  });
}

任何有关进行方法的建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

感谢@wOxxOm,我现在知道这是一个异步调用,这就是为什么它不起作用的原因:

function getValue(textboxId) {
  storage.get(textboxId, function(result) {
    return result.name; << this is the problem
  });
}