Chrome扩展程序background.js文件重新加载

时间:2016-11-18 04:48:47

标签: javascript google-chrome-extension

修改

我的chrome扩展在background.js文件中调用api服务,我可以获取数据。但关闭浏览器窗口后,我无法从background.js文件中的api服务获取数据。它显示空值。当转到chrome:// extensions /并重新加载扩展时,我可以获取数据。

当关闭浏览器窗口时,正在重置所获取的数据,当打开浏览器时,数据未获取。只有在重新加载扩展名后才能从api获取数据。

为什么会发生这样的事情。有没有人对此有所了解?

这是我的manifest.json文件

{
  "manifest_version": 2,
  "icons": {
    "16": "images/icon16.png",
    "32": "images/icon32.png",
    "48": "images/icon48.png",
    "128": "images/icon128.png"
  },
  "name": "Test",
  "short_name": "Test",
  "description": "Test",
  "version": "3.0.0",
  "background": {
    "scripts": [
      "build/background-bundle.js"
    ]
  },
  "browser_action": {
    "default_popup": "popup.html"
  },
  "permissions": [
    "tabs",
    "cookies",
    "storage",
    "activeTab",
    "http://*/",
    "https://*/"
  ],
  "content_scripts": [{
    "matches": [
      "<all_urls>"
    ],
    "js": [
      "build/content-bundle.js"
    ],
    "run_at": "document_end"
  }], 
  "options_ui": {    
    "page": "options.html",
    "chrome_style": true 
  },
  "content_security_policy": "script-src 'self' https://www.google-analytics.com/analytics.js https://api.algorithmia.com/v1/algo/algo://nlp/SummarizeURL/0.1.1; object-src 'self'"
}

1 个答案:

答案 0 :(得分:1)

除了重新打开浏览器或手动重新加载扩展程序之外,您无法重新加载后台文件。您应该做的是让内容脚本告诉background.js在用户登录时再次运行getTaxonomyList

background.js:

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
    if (request.userLoggedIn) {
       getTaxonomyList().done(function(list) {
          sendResponse(list);
       });
    }
})