Расширение Chrome: загрузка различных скриптов контента - PullRequest
18 голосов
/ 27 сентября 2011

Я хочу загрузить другой скрипт контента в зависимости от выбранной страницы и вкладки. Прямо сейчас у меня есть три сценария содержания. Я хочу использовать два из них для одной страницы и третий для другой страницы.

Принадлежность к странице 1:

content_script.js load_content_script.js

Принадлежность к странице2:

newtab_content_script.js

сейчас мой манифест выглядит так

{
  "name": "A plugin for AdData express. Generate an instant excel document from the brands you check mark.",
  "version": "1.0",
  "background_page": "background.html",
  "permissions": [
    "cookies",
    "tabs", 
    "http://*/*", "https://", "*", "http://*/*", "https://*/*",
    "http://www.addataexpress.com", "http://www.addataexpress.com/*"
  ],
  "content_scripts": [
    {
      "matches": ["<all_urls>","http://*/*","https://*/*"],
      "js": ["load_content_script.js", "content_script.js", "newtab_content_script.js", "jquery.min.js", "json.js"]
    }
  ],
  "browser_action": {
      "name": "AdData Express Plugin",
      "default_icon": "icon.png",
      "js": "jquery.min.js",
      "popup": "popup.html"
  }
}

как бы я структурировал это в манифесте или в другом месте?

Ответы [ 3 ]

76 голосов
/ 27 сентября 2011

Просто в интересах полноты, способ сделать это из манифеста состоит в том, чтобы иметь столько блоков matches в "content_scripts", сколько необходимо:

"content_scripts": [
  {
    "matches": ["http://www.google.com/*"],
    "css": ["mygooglestyles.css"],
    "js": ["jquery.js", "mygooglescript.js"]
  },
  {
    "matches": ["http://www.yahoo.com/*"],
    "css": ["myyahoostyles.css"],
    "js": ["jquery.js", "myyahooscript.js"]
  }
],
20 голосов
/ 27 сентября 2011

Вместо использования сценариев содержимого, которые привязаны к выражениям URL, указанным в манифесте, следует использовать executeScript , который позволяет программно решать, когда вставлять фрагмент JS или файл:

chrome.tabs.executeScript(null, {file: "content_script.js"});
4 голосов
/ 27 сентября 2011

Вы должны использовать Программный впрыск

chrome.tabs.executeScript(null, {file: "content_script.js"});
...