我在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": ["*"]
}
}
答案 0 :(得分:1)
当您的代码在您的扩展程序上下文中运行时,您的代码即可访问chrome.storage
。
如果您打开file://.../newHTML.html
,那只是普通的javascript上下文。
使用chrome.runtime.getURL("newHTML.html")
来获取扩展URL,如下所示:chrome-extension://[id]/newHTML.html
。
此外,无需等待DOMContentLoaded即可访问localStorage。