我的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?
答案 0 :(得分:1)
在background.js文件中缺少结束标记。一旦我添加了,那么背景中的js就像预期的那样完全运行。
因此,使用您自己的background.html页面与自动生成的页面相比,没有额外的操作(对于后来的操作)。