这篇翻译不完整。请帮忙从英语翻译这篇文章

WebExtension是一个打包好的、可供发布的安装包,该安装包中包含若干文件。 本文中,我们快速地介绍一遍安装包内可能出现的文件。

manifest.json

这是唯一一个在每个 WebExtension 里面必须存在的文件。它包含了关于这个扩展插件基本的元数据(metadata),比如它的名字、版本和所需权限。并且,它也对 WebExtension中其他文件进行了链接。

这个manifest文件还可以指向其它一些类型的文件:

浏览其他的详细信息请到 manifest.json

除了这些 manifest 引用的文件之外,扩展也可以携带额外的 Extension pages

Background scripts

扩展常常需要独立于任何浏览器窗口或特定网页来维持一种长期的状态或者执行长期的操作。background scripts的存在就是为了这个。

Background scripts将在插件加载完后开始运行,直到插件被禁用或者被卸载时停止。只要获得了必要的权限,你就可以在脚本中使用任何 WebExtension APIs

指定background scripts

你可以通过在 manifest.json 中添加关键字 background来引入background scripts:

// manifest.json

"background": {
  "scripts": ["background-script.js"]
}

可以添加多份background scripts:此时,就像同一个网页中的多个脚本一样,他们运行在同一环境中。

Background scripts的运行环境

DOM APIs

Background scripts在特定后台页面的环境中运行。 后台页面为其提供了全局 window 也提供了所有的标准 DOM API。

你不必自己配置后台页面。如果你引入了一个background script,一个空白后台页面会自动为你创建出来。

而如果你想要自己配置后台页面,就需要在 manifest.json 中这样配置:

// manifest.json

"background": {
  "page": "background-page.html"
}

WebExtension APIs

只要扩展获得了必要的权限,Background scripts就可以使用所有的API WebExtension APIs

跨域访问

Background scripts 可以向任何拥有 host permissions 的主机发送XHR请求。

网页内容

background scripts无法获得页面的直接权限。不过,他们可以在页面中加载 content scripts (Content scripts)并且可以通过message-passing API与Content scripts通信

内容安全策略

根据内容安全策略,background scripts一些可能危险的操作会被禁止,例如使用 eval()。 有关详情请查看 内容安全策略

侧边栏,弹出窗口,选项页面

您的扩展程序可以包含各种用户界面组件,其内容使用HTML文档进行定义:

对于每一个这些组件,都可以创建一个HTML文件,并使用manifest.json中的特定属性指向它。 HTML文件可以包含CSS和JavaScript文件,就像普通的网页一样。

所有这些都是一种扩展页面,与普通网页不同,JavaScript可以使用所有相同的特权WebExtension API作为后台脚本。 他们甚至可以使用 runtime.getBackgroundPage() 直接访问后台页面中的变量。

扩展页面

您也可以在扩展中包含HTML文档,这些文档不附加到某个预定义的用户界面组件。与您可能为侧边栏,弹出窗口或选项页面提供的文档不同,它们在manifest.json中没有条目。但是,他们也可以访问所有与您的后台脚本相同的特权WebExtension API。

你通常可以使用 windows.create()tabs.create()加载一个页面.

参考扩展页面 学习更多.

Content scripts

使用content scripts来访问和操作页面。Content scripts会被加载到页面中并运行在页面的特定环境下。

Content scripts是由扩展提供的脚本,与页面本身的脚本以及<script>标签中的脚本是不同的。

Content scripts可以像普通脚本一样获取、操作页面的 DOM。

与普通的页面内脚本不同,Content scripts可以:

Content scripts无法直接获取页面脚本,但可以通过 window.postMessage() API 来与之传递信息。

通常情况下,我们讨论的Content scripts是指 javascript 脚本,但是可以用同样的机制来注入 CSS 文件。

详情请见 content scripts

Web accessible resources

Web accessible resources是指像图片、HTML、CSS和JavaScript之类的,引入插件并且想要获得访问权限的内容脚本和页面脚本。成为web-accessible的资源可以在页面脚本和内容脚本中通过使用特定的URL方案来引用。
举个例子来说,如果一个内容脚本想要把一些图片插入网页,你可以在插件中引入它们并且使他们成为web-accseeible。接下来内容脚本就可以创建并追加包含src属性的img标签了。

了解更多请看文档web_accessible_resources manifest.json key.

 

 

文档标签和贡献者

标签: 
最后编辑者: brucelei,