如何通过Chrome扩展程序中的多个HTML文件访问Chrome存储

时间:2019-05-31 10:50:13

标签: javascript google-chrome-extension

我在chrome扩展程序中已经有一个选项页,并且我正在尝试在扩展程序目录中创建其他几个页面,这些页面需要利用popup.html收集的chrome存储数据。

我尝试将新的HTML页面添加到manifest.json文件的options页面属性中,但这阻止了扩展的加载。在新的非选项HTML页面上通过“ DOMContentLoaded”事件访问Chrome存储时,如下所示:

document.addEventListener("DOMContentLoaded", function () {
    getData();
}, false);

function getData() {
    chrome.storage.local.get(['data'], function (result) {
        console.log(result.data);
        setFormData(result.data[0])
    });
}


function setFormData(data){
    console.log(data)
}

我收到此错误:

未捕获的TypeError:无法读取未定义的属性“ local”

我认为这意味着newHTML.html没有使用清单文件,但是我要确定我是如何告诉清单文件有关newHTML的。

这是清单文件:

{
    "name": "ExtensionName!",
    "version": "1.0",
    "description": "A Chrome Extension!",
    "permissions": ["activeTab", "declarativeContent", "storage","<all_urls>"],
    "background": {
      "scripts": ["background.js"],
      "persistent": false
    },
    "options_page": "formMenu.html",
    "page_action": {
      "default_popup": "popup.html",
      "default_icon": {
        "16": "images/get_started16.png"
      }
    },
    "icons": {
      "16": "images/get_started16.png"
    },
    "manifest_version": 2,
    "content_security_policy": "script-src 'self' https://code.jquery.com https://cdnjs.cloudflare.com https://stackpath.bootstrapcdn.com https://use.fontawesome.com; object-src 'self'",
    "externally_connectable": {
      "ids": ["*"]
    }
  }

1 个答案:

答案 0 :(得分:1)

当您的代码在您的扩展程序上下文中运行时,您的代码即可访问chrome.storage
如果您打开file://.../newHTML.html,那只是普通的javascript上下文。

使用chrome.runtime.getURL("newHTML.html")来获取扩展URL,如下所示:chrome-extension://[id]/newHTML.html

此外,无需等待DOMContentLoaded即可访问localStorage。