gpt4 book ai didi

javascript - 弹出窗口和浏览器操作窗口之间的 chrome.storage

转载 作者:行者123 更新时间:2023-11-30 12:32:01 26 4
gpt4 key购买 nike

我正在编写一个 chrome 扩展,我想使用 chrome 存储管理所有数据/变量。据我了解,我应该能够在我的扩展程序中使用 chrome.storage。

我想在 browser_action 脚本中设置一些东西,然后在后台脚本创建的窗口中访问它。 HTML 和 JS 文件都有对应的名称。

这是我试过但没有运气的方法:

// list .json

{
"manifest_version": 2,

"name": "extension",
"description": "my extension",
"version": "0.1",

"permissions": [
"tabs",
"storage"
],

"background": {
"scripts": ["background.js"],
"persistent": false
},

"browser_action": {
"default_icon": {
"38": "images/icon38.png"
},
"default_popup": "settings.html"
}

}

//背景.js

chrome.windows.create({'url': chrome.extension.getURL("newPage.html"),'type': "detached_panel",'focused': true}, function(){
//created newPage.html which has newPage.js
});

//设置.js

document.addEventListener('DOMContentLoaded', function(){
chrome.storage.local.set({'enabled': 'TRUE'});
});

//newPage.js

chrome.storage.local.get('enabled', function(result){
document.getElementById("myId").innerHTML += "<br>script loaded... and status: " + result.enabled;
});

当我这样做时,newPage.html 显示“脚本已加载...和状态:未定义”。

即使它是异步的,存储值也应该在第二次运行脚本时填充,对吧?

我可能只是使用不当。如果是这样,在我的新窗口中设置具有 Chrome 存储的内容以访问的正确方法是什么?

如有任何帮助,我们将不胜感激!

最佳答案

我认为您的 newPage.html 在由 settings.html 中的事件处理程序设置之前要求“enabled”的值,它仅在之后执行您实际上已经打开了浏览器弹出窗口。所以这就是它未定义的原因。打开弹出窗口,您应该会看到它已定义。

关于javascript - 弹出窗口和浏览器操作窗口之间的 chrome.storage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27414495/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com