如何在Chrome扩展程序中使用带有Manifest 2的background.html页面(而不是background.js)

时间:2017-12-05 22:44:03

标签: google-chrome google-chrome-extension

我的Chrome扩展程序在指定为脚本(background.js)的背景下效果很好。 Chrome创建了一个虚拟的background.html页面...

我需要一个背景脚本(以获得Google云端硬盘集成),因此(据我所知)需要转移到background.html。

我的清单现在指定:

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

我添加了#34; https://apis.google.com/js/api.js"到我的原始设置(下方)获取我的Chrome扩展程序的Google云端硬盘访问权限...但我的背景页面正在投放" gapi未定义"错误...所以我切换到background.html尝试让我的后台进程能够访问Drive脚本。

"background": {
    "scripts": ["/dscripts/jquery-3.1.1.min.js","/dscripts/firebase.js","/dscripts/bootstrap-multiselect.min.js","/dscripts/bootstrap.min.js", "https://apis.google.com/js/api.js", "/scripts/background.js"]},

我的新background.html页面如下所示:

<!DOCTYPE html>
<html>
  <head>
    <!--Original javascript / CDN -->
    <script type="text/javascript" src="dscripts/jquery-3.1.1.min.js"></script>
    <script type="text/javascript" src="dscripts/jquery-ui.min.js"></script>
    <script type="text/javascript" src="dscripts/bootstrap.min.js"></script>
    <script type="text/javascript" src="dscripts/bootstrap-toggle.min.js"></script>

    <!-- FIREBASE  - I think we only need JS, not app.js and auth.js -->
    <script src="dscripts/firebase.js"></script>

    <!-- <script src="https://www.gstatic.com/firebasejs/4.6.2/firebase.js"></script>
<script> -->

    <!-- Google APIS -->
    <script type="text/javascript" src="https://apis.google.com/js/api.js"></script>

    <!-- background.js -->
    <script type="text/javascript" src="scripts/background.js">

  </head>
</html>

我还没有对background.js进行任何更改 - 它包含 chrome.runtime.onStartup.addListener 以及许多完善的逻辑。

当我运行扩展程序并查看background.html控制台时,我得到: 导航到chrome-extension://XXXXX/background.html

通常我的background.js文件会生成大量的调试控制台内容。就像background.js没有运行一样。

这是有道理的,我猜 - 没有dom来加载和触发动作。

我觉得我错过了一些非常明显的事情(道歉) - 但我能找到的所有例子都使用background.js,而不是background.html。

如何在指定background.html时触发我的JavaScript?

1 个答案:

答案 0 :(得分:1)

在background.js文件中缺少结束标记。一旦我添加了,那么背景中的js就像预期的那样完全运行。

因此,使用您自己的background.html页面与自动生成的页面相比,没有额外的操作(对于后来的操作)。