问题标签 [google-chrome-storage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
240 浏览

javascript - 来自 JSON 对象的 Chrome.storage.sync.set

我正在尝试将动态生成的 JSON 对象保存到 Chrome 的同步存储中。

本质上,我正在运行查询以获取所有打开的选项卡:

然后,我从用户输入中获取这组选项卡的名称,构建一个 JSON 对象并将其保存到 Chrome 的同步存储中:

obj 变量本质上是我正在寻找的结构,并且按预期工作,如 console.log(obj) 所示。像这样的输出:

期望的输出

但是,当我尝试将其存储在 Chrome 中时 - 它只是将其保存为带有空数组的 group_name。因此,如果我将此信息从存储中拉出并注销,我会得到:

实际输出

0 投票
1 回答
23 浏览

javascript - 在 chrome 存储 api 中调用对象

我无法制作需要跟踪用户总搜索量的 chrome 扩展程序。我的代码在内容脚本中创建一个对象,然后添加到该对象并将其存储在 chrome 存储中,但是每次内容脚本再次运行时,我很确定我的对象被重置为一个空对象。我的一个想法是在后台脚本中创建对象并将其放入存储中,然后将其添加到我的内容脚本中的对象中,但是我遇到了对象未在我的内容脚本中定义的问题并回到我所拥有的起初。

这是我的重要内容脚本:

0 投票
1 回答
575 浏览

javascript - 如何使用 chrome.storage.sync.remove 从数组中删除一项?

我正在构建一个 Chrome 浏览器扩展程序,其中包含一个允许用户保存 url 的功能。我曾经chrome.storage.sync创建过这个功能,没有遇到任何问题。

但是,我还需要让用户删除他们已经保存的 url。我创建了一个文本输入框,他们可以在其中输入他们想要删除的单个 url(即“www.url.com”)。我想将此输入转换为字符串,并在用户按下按钮时使用它从 Chrome 存储中删除匹配的字符串。

我认为chrome.storage 文档指定chrome.storage.sync.remove可用于从存储的数组中删除字符串,但我无法让它工作。这是我的代码:

此代码不会引发任何错误,但也不会从数组中删除 url。

请注意,我一次只想删除 1 个 url,数组中没有重复的 url,而且我没有使用任何像 jQuery 这样的库。我究竟做错了什么?

0 投票
0 回答
55 浏览

asynchronous - 我应该如何在 Chrome 扩展程序的内容脚本中获取保存到 chrome.storage 的大量选项列表?

我的 Chrome 扩展程序中有一个选项页面,其中包含大量保存到chrome.storage. 这些选项可用于多个不同的网站。为了使用这些选项,我必须在这些网站上加载的内容脚本中检索它们。

我正在尝试找出处理此问题的最佳方法。我相当有信心,一旦我在网站上的会话期间加载了我的选项,我希望将它们保存到sessionstorage或者localStorage以便我可以在同一站点的后续页面加载时快速同步访问它们。

但这些选项的初始检索是我想知道什么是最好的方法。我的直觉说,只需从我的内容脚本中对每个单独的选项进行所有异步调用,document_start并在我使用Promise.all().

我的另一个想法是使用消息传递与后台页面对话,我的所有选项都已经可用,因为我将在 Chrome 启动时完成异步调用,或者因为我可以跳过 chrome.storage 并将它们存储在后台页面中localStorage. 在这种情况下,每个需要选项的不同网站只是向后台页面发送一条消息,而不是对chrome.storage.

0 投票
1 回答
2625 浏览

asynchronous - 如何将 Promise.all() 与 chrome.storage() 一起使用?

我有几个异步函数正在运行。我想等他们都完成后再采取下一步行动。这是我用来从中获取所有键/值chrome.storagePromise.all()实现的代码。

不幸的是,这不起作用。它返回undefined

上面的大部分代码都取自这里的 MDN:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all

0 投票
0 回答
24 浏览

google-chrome-extension - Chrome 存储 API - GET 调用

我无法理解 Google chrome 的获取和设置功能。

请参考下面的代码片段。

我得到以下输出。l1 s1 l2 s1

我故意不设置 v2,因为我想了解尚未设置变量时的结果。

我无法理解为什么 get with key v2 返回 s1。

有人可以让我知道我哪里出错了。

问候,法尔汉

0 投票
2 回答
432 浏览

javascript - Javascript 承诺不同步行动

我正在尝试使用 JavaScript 承诺,以便我的其余代码等待我的异步 'chrome.storage.local.get' 调用。但是,代码似乎仍在异步运行,因此会发送未定义的数据。

JavaScript 代码:

控制台显示以下输出:

如果你回头看代码,这个显示表明它没有同步工作......

0 投票
0 回答
39 浏览

javascript - Chrome 存储响应未定义

我有以下功能可以轻松地从 chrome 存储中读取数据:

}

我正在使用如下功能:

但它会响应两次,而第一次总是未定义。我在做什么假?我有这样的输出:

0 投票
0 回答
1011 浏览

google-chrome - chrome.storage.sync.get 与从 chrome.storage.local 获取的速度

我正在开发一个 Chrome 扩展,其功能依赖于选项,所以我在从 Chrome 存储中获取选项后调用 main 函数作为回调。

在我的机器上进行测试时,使用 chrome.storage.sync.get,而不是 chrome.storage.local.get,我得到了更快的结果,但它仍然大大减慢了页面加载速度。我想知道这是否只是我的机器,通常 local.get 会更快,或者是否有办法缓存这些设置以便更容易访问。

谢谢您的帮助!:)

0 投票
1 回答
192 浏览

google-chrome-extension - 当我尝试访问扩展程序中的本地存储时发生意外错误

我正在更新几个月前写的扩展,当我完成时,我意识到本地存储loader.js(每次访问特定页面时加载的文件)返回:

这是我尝试从本地存储加载信息的部分:

这在过去没有问题,但现在没有。火狐就是这种情况。在 Chrome 上,扩展程序也不起作用,并且不会从loader.js. 我不确定 API 是否已更改或是否引入了有关访问本地存储的一些新更改。我在网上寻找解决方案,但没有关于这个问题的任何信息。

在扩展页面上,我可以毫无问题地设置和获取存储中的所有信息。