Javascript Chrome存储API不使用内容脚本
我正在使用chrome存储API保存需要在内容脚本页面上访问的数据。当我像这样在扩展设置页面中加载数据时Javascript Chrome存储API不使用内容脚本,javascript,google-chrome-extension,google-chrome-storage,Javascript,Google Chrome Extension,Google Chrome Storage,我正在使用chrome存储API保存需要在内容脚本页面上访问的数据。当我像这样在扩展设置页面中加载数据时 document.write("chrome.storage.sync.get(\"password\", function(items) {\n"); document.write("var true_password = items.password;\n"); document.write("});\n"); 它可以工作,但相同的代码不适用于内容脚本 我犯了这个错误 未捕获的Type
document.write("chrome.storage.sync.get(\"password\", function(items) {\n");
document.write("var true_password = items.password;\n");
document.write("});\n");
它可以工作,但相同的代码不适用于内容脚本
我犯了这个错误
未捕获的TypeError:无法读取未定义的属性“sync”
知道为什么吗
编辑
manifest.json
{
"name":"app",
"description":"app...",
"version":"0.1",
"manifest_version":2,
"options_page": "options.html",
"permissions": [ "storage" ],
"content_scripts": [
{
"matches": ["https://www.my_page.com/*"],
"js": ["lock.js"]
}
]
}
任何直接写入页面DOM的内容,无论是使用
文档写入还是插入
元素,都不再被视为内容脚本
相反,它在页面自身上下文的外部执行。这意味着它无法访问内容脚本API或内容脚本中定义的变量/函数
不过,您仍然可以。检查我是否拥有“权限”:[“存储”]
在我的清单中,是您的lock.js
中的实际代码,还是您正在从控制台尝试它?我使用document.write(“chrome.storage.sync.get”(“password\”,function(items){\n)编写代码是否重要
在lock.js中当然,因为该代码离开内容脚本上下文并在页面上下文中执行,而页面上下文没有访问API的权限。为什么要这样做?也许这是一个新的更新“扩展的内容脚本可以直接访问用户数据,而不需要后台页面。”:@alayli否。这意味着在不发送消息的情况下访问扩展数据(选项等)。