【问题标题】:View Background HTML page in Chrome Extension在 Chrome 扩展程序中查看背景 HTML 页面
【发布时间】:2017-07-07 19:28:49
【问题描述】:

我正在开发 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.htmlPopup.js

单击弹出图标时打开一个新的 Background.html 实例。

Work.js

无限循环:发出 AJAX 请求、处理数据和更新 Background.html。脚本位于我的扩展文件夹中。

Background.html

每个实例都调用自己的 Work.js 实例。


如果我单击弹出窗口,Background.html 的新实例将在新选项卡中打开。我可以在chrome://extensions/ 中看到现在有 2 个 Background.html 实例。它从这个时刻开始显示数据,我可以看到页面的 HTML 元素。关闭选项卡时,该数据将丢失。

我希望能够看到原始 Background.html 页面的 HTML 元素。原始实例自启动以来一直在运行,并在 Chrome 关闭时继续运行,因此它包含所有数据。

chrome://extensions/中点击查看Background.html的原始实例时,只能看到开发者工具,看不到页面上的HTML元素。

【问题讨论】:

    标签: javascript html google-chrome google-chrome-extension


    【解决方案1】:

    仅仅因为文件名为 background.html,当您在选项卡中打开它时,它不会成为背景页面。它变成了另一个拥有自己的上下文、文档、窗口的页面——而且它只存在于该选项卡关闭之前。这些扩展只有一个真实的背景页面,在 manifest.json 的 "background" 部分中声明。

    请务必阅读extensions architecture overview 并重新编写您的代码。您可以将数据保存在chrome.storage.local 中,也可以在扩展程序的其他页面中使用chrome.extension.getBackgroundPage() 来访问真实且唯一的背景页面window 对象,该对象将公开全局变量和函数。

    【讨论】:

    • 我想我的意思是问有没有一种简单的方法可以将所有 HTML 元素从我的真实背景页面复制到用户可见的某个新页面?我的代码可以在真实但不可见的背景页面上显示所有数据。
    • 元素不能在不同页面之间复制,但你可以复制它们的html。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多