Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome extension 在Chrome扩展中,为什么要使用带有HTML的背景页面?_Google Chrome Extension - Fatal编程技术网

Google chrome extension 在Chrome扩展中,为什么要使用带有HTML的背景页面?

Google chrome extension 在Chrome扩展中,为什么要使用带有HTML的背景页面?,google-chrome-extension,Google Chrome Extension,我知道Chrome扩展的背景页面永远不会显示。对我来说,背景页面应该只包含脚本是有道理的。在什么情况下需要HTML标记 在这里有一个HTML背景页面的例子,但我无法让它工作(可能是因为我不确定它应该做什么) 有没有简单的Chrome扩展的例子可以演示HTML标记在背景页面中的作用?My two cents: 例如,它在background.html <canvas id="canvas" width="19" height="19"> 然后它可以在background.js中操

我知道Chrome扩展的背景页面永远不会显示。对我来说,背景页面应该只包含脚本是有道理的。在什么情况下需要HTML标记

在这里有一个HTML背景页面的例子,但我无法让它工作(可能是因为我不确定它应该做什么)

有没有简单的Chrome扩展的例子可以演示HTML标记在背景页面中的作用?

My two cents: 例如,它在
background.html

<canvas id="canvas" width="19" height="19">

然后它可以在
background.js
中操作
canvas
,并调用
chrome.browserAction.setIcon({imageData:canvasContext.getImageData(…)})
来更改浏览器操作图标

我知道我们可以通过
background.js
动态地创建
canvas
,但是当做一些涉及DOM元素的事情时,直接使用html似乎更容易。

历史原因 从技术上讲,背景页面是一个完整的单独文档——只是它不是在实际的选项卡中呈现的

也许为了简单起见,扩展首先需要通过
background\u页面
manifest属性为后台页面提供完整的HTML页面。这是唯一的形式

但是,正如你的问题所证明的那样,大多数情况下,除了保存脚本之外,并不清楚该页面实际上可以用来做什么。这使得整个事情只是一个样板

这就是为什么当Chrome推出了
“manifest_version”:2作为扩展的一个大改头换面时,他们添加了另一种格式,
background.scripts
array。这将把样板文件卸载到Chrome上,Chrome将为您创建一个背景页面文档,简洁地称为
\u generated\u background\u page.html

今天,这是一种首选方法,尽管
background.page
仍然可用

实际原因 综上所述,您有时仍然希望在后台页面的文档中包含实际元素

  • 用于动态地将脚本添加到后台页面(只要它们可用)。
    除此之外,由于您不能通过
    background.scripts
    数组包含外部脚本,因此需要为那些为此而将其列入白名单的对象创建一个
    元素
  • 用于准备图像数据以供其他地方使用,例如在中
  • (实际上不要这样做)
  • 用于将外部页面嵌入到背景页面中,这有时有助于提取动态数据
  • …可能更多
哪个样板文件“更好”是有争议的:作为文档提前创建元素,或者根据需要使用
document.createElement
及其好友


在任何情况下,无论是由您提供的还是由Chrome自动生成的,背景页面始终是一个页面。您可以使用所需的所有DOM函数。

另一个示例是
元素或
用于剪贴板操作。@Xan,您可以作为答案发布Xan吗?在这方面你知道的更多:)