Javascript 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

我正在使用chrome存储API保存需要在内容脚本页面上访问的数据。当我像这样在扩展设置页面中加载数据时

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否。这意味着在不发送消息的情况下访问扩展数据(选项等)。