我正在开发 Chrome 扩展程序。目的是在页面上显示从多个服务器收集的数据。我利用 Chrome 扩展程序在 PC 开启时作为后台进程运行的功能,以便始终收集数据。
Manifest.json
{
"manifest_version": 2,
"name": "Data Hub",
"description": "This extension gathers and analyzes data from several servers",
"version": "1.0",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"background": {
"page": "background.html"
},
"permissions":[
"background"
],
}
Popup.html 和 Popup.js
单击弹出图标时打开一个新的Background.html 实例。
Work.js
无限循环:发出AJAX请求、处理数据并更新Background.html。脚本位于我的扩展文件夹中。
背景.html
每个实例都调用自己的 Work.js 实例。
<小时/>如果我单击弹出窗口,Background.html 的新实例将在新选项卡中打开。我可以在 chrome://extensions/
中看到现在有 2 个 Background.html 实例。它从此时开始显示数据,我可以看到页面的 HTML 元素。关闭选项卡后,该数据就会丢失。
我希望能够看到原始Background.html 页面的HTML 元素。原始实例自启动以来一直在运行,并在 Chrome 关闭时继续运行,因此它包含所有数据。
在chrome://extensions/
中,当我点击查看Background.html的原始实例时,我只能看到开发者工具,而看不到页面上的HTML元素。
最佳答案
仅仅因为文件名为background.html,当您在选项卡中打开它时,它不会成为背景页面。它变成了另一个具有自己的上下文、文档、窗口的页面 - 并且这一切仅在该选项卡关闭之前才存在。这些扩展只有一个真实的背景页面,该页面在 manifest.json 的 "background"
部分中声明。
请务必阅读 extensions architecture overview并修改你的代码。您可以将数据保存在chrome.storage.local中或者您可以使用chrome.extension.getBackgroundPage()在扩展程序的其他页面中访问将公开全局变量和函数的真实且唯一的后台页面 window
对象。
关于javascript - 在 Chrome 扩展程序中查看后台 HTML 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44978382/