Как внедрить скрипт содержимого при загрузке страницы с всплывающей страницей? - PullRequest
5 голосов
/ 23 января 2012

Я пытаюсь внедрить свой код, используя метод контента для расширений Google Chrome.Это работает только тогда, когда мой манифест не имеет всплывающей страницы, а мой background.html имеет следующее:

chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null, { file: "jquery.js" }, function() {
chrome.tabs.executeScript(null, { file: "content_script.js" });
});
});

Как я могу запускать этот код каждый раз, когда новая страница загружается в Chrome при наличииСтраница всплывающих окон?потому что до сих пор единственный способ, которым это работает, - это когда я нажимаю кнопку действия браузера расширения.

Также в разделе манифеста сценария содержимого я включил все это:

"content_scripts": [
{

"matches": ["http://jquery.com/*"],
"all_frames":true,
  "js": ["jquery.js","jquery-ui.min.js","content_script.js"],
   "run_at": "document_end"
}
],  

1 Ответ

7 голосов
/ 23 января 2012

Краткий ответ: Используйте chrome.tabs.onUpdated.addListener вместо chrome.browserAction.onClicked.addListener на фоновой странице, чтобы загружать скрипт содержимого каждый раз, когда страница обновляется.

Длинный ответ: У вас CAN фактически есть скрипт контента, который загружается, когда он является всплывающей страницей, либо путем включения скрипта контента из манифеста, либо с помощью программного внедрения с фоновой страницы (как вы предложили в своем вопросе).

Из манифеста:

{
  "name": "My extension",
  ...
  "content_scripts": [
    {
      "matches": ["http://myurl.com/*"],
      "css": ["mystyles.css"],
      "js": ["jquery.js", "myscript.js"]
    }
  ],
  "permissions": [
     "http://myurl.com/*",
     "tabs"
  ],
  "background_page": "background.html",
  "browser_action": {
     "popup": "popup.html"
  }
  ...
}

Убедитесь, что свойство "совпадения" соответствует URL-адресу страницы, на которую вы хотите загрузить скрипт содержимого.

Использование программных средствинъекция:

Вы можете использовать способ, предложенный вами в своем вопросе, который будет вставлять скрипт содержимого при нажатии действия браузера ИЛИ , вы можете делать это каждый раз, когда обновляется URL браузера, например:итак:

chrome.tabs.onUpdated.addListener(function() {
  chrome.tabs.executeScript(null, { file: "jquery.js" }, function() {
    chrome.tabs.executeScript(null, { file: "content_script.js" });
  });   
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...