簡體   English   中英

如何在后台獲取chrome擴展程序的內容腳本?

[英]How can I get chrome extension's content script to in the background?

這是我的package.json,但是我的background.js不在后台運行。 我已經嘗試了一段時間,但還沒弄清楚。 在此先感謝您的幫助,

{
  "manifest_version": 2,
  "name": "Focus",
  "version": "1.9.3",
  "description": "Block distracting websites and get inspired to focus on what's important",
  "background_page": "background.html",
  "icons": {
    "16": "inspirelogo16.png",
    "48": "inspirelogo48.png",
    "128": "inspirelogo128.png"
  },
  "browser_action": {
    "default_icon": "inspirelogo19.png",
    "default_title": "Inspire Router",
    "default_popup": "/pages/popup.html"
  },
  "permissions": [
    "background",
    "notifications",
    "tabs",
    "<all_urls>",
    "webRequest",
    "*://*.google.com/"
  ],
  "background": {
    "scripts": [
      "background.js"
    ],
    "content_scripts": [
      {
        "matches": ["<all_urls>"],
        "js": ["background.js"]
      }
    ],
    "persistent": true
  },
  "options_page": "/pages/fieldpage.html",
  "content_security_policy": "script-src 'self' 'unsafe-eval' chrome-extension://bjmcjeffnloaojffcbaekmcokegnejlf/pages/inspire.html http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js https://ssl.google-analytics.com/ga.js http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js https://connect.facebook.net https://www.facebook.com https://chrome.google.com https://chrome.google.com; object-src 'self'"
}

您應該將content_script放在背景之外,例如

"background": {
  "scripts": [
    "background.js"
  ],
  "persistent": true
},
"content_scripts": [
  {
    "matches": ["<all_urls>"],
    "js": ["background.js"]
  }
],

如@minj所述,您應該刪除background_page屬性。 (您可以使用它,也可以使用background

后台也會在自己的頁面上運行,而不是在瀏覽器中看到的頁面上運行。 你可以找到它。

如果要使腳本可以同時在bg和內容腳本中訪問,例如具有共享功能的utils.js文件,則可以將其添加到background.scriptscontent_scripts.js數組中

您應該將背景頁面視為一個附加頁面(可以通過訪問chrome://extensions/並點擊擴展程序上的background page直接訪問該background page ),與瀏覽器中打開的標簽分開。 例如,您無法從后台頁面訪問正在瀏覽器中查看的頁面的dom元素。

例如,當您重新加載常規頁面(與上述bg頁面相對)時,bg頁面及其變量不會刷新。 它們只是兩個不同的標簽。

但是,內容腳本只是在與content_scripts.matches匹配的頁面中加載的腳本,就像它們是從頁面本身加載的一樣。 它們不會在頁面之間持久存在,也不會共享信息。

您可能要與dom元素進行交互並擁有一個持久的bg腳本。 為此,您使用消息傳遞協議,該協議使內容腳本和bg頁面之間保持異步。 我通常將bg頁用作從內容腳本獲取信息並向其發送訂單的持久控制器。

刪除background_page因為它會覆蓋background 您只能使用其中一個,不能同時使用兩者。

或者,通過常規script標記將腳本添加到background.html文件:

<script type="application/x-javascript" src="/background.js"></script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM