Доступ к контенту страницы из расширения - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь создать на расширении кнопку для нажатия на ссылку с определенной страницы, мне удалось кое-что сделать, но я до сих пор не могу получить доступ к содержанию страницы, вот что я сделал до сих пор :

background.js

chrome.browserAction.onClicked.addListener(function(tabId, changeInfo, tab){
chrome.tabs.getCurrent(function(tab) {
    if(changeInfo && changeInfo.status == "complete"){
        chrome.tabs.executeScript(tabId, {file: "jquery.js"}, function(){
            chrome.tabs.executeScript(tabId, {file: "main.js"});
        });
    }
});

manifest.json

 {
  "name": "ext",
  "version": "2.0",
  "manifest_version": 2,
  "description": "ext desc",
  "icons" : {
    "16": "icons/icon16.png",
    "38": "icons/icon38.png",
    "48": "icons/icon48.png",
    "128": "icons/icon128.png"
  },
  "browser_action": 
     {
   "default_icon": "icons/icon16.png",
   "default_popup": "popup.html"
    },
    "background": {
      "matches" :  ["<all_url>"],
      "persistent":true,
      "scripts": [ "background.js"]
  },
  "content_scripts": [
    {
      "matches": ["*://*/*", "file://*/*"],
      "css": ["src/custom.css"],
      "js": ["background.js"]
    }
  ],
  "permissions": [
    "activeTab",
    "tabs"
  ],
  "web_accessible_resources": ["background.js"]

}

1 Ответ

0 голосов
/ 13 марта 2019

Если вы просто намереваетесь ввести main.js и jquery.js в каждую вкладку, то вы можете просто изменить content_scripts на следующее:

{
  "matches": ["<all_urls>"],
  "js": ["jquery.js", "main.js"]
}  

Обратите внимание, что я также исправил "matches": "<all_urls>" уже охватывает все возможные URL.

Также обратите внимание, что "background.js" не входит в "web_accessible_resources". Это место для таких вещей, как изображения, которые находятся в папке WebExtension, которую вы хотите отображать на веб-сайтах.

РЕДАКТИРОВАТЬ : очень похожая проблема была решена в ответе на этот вопрос , вы не можете получить прямой доступ к странице вкладки из своего всплывающего окна. Для этого вам нужно либо использовать API обмена сообщениями, либо ввести код (как показано в ответе). Я также обнаружил, что у вас есть еще одна опечатка в вашем background matches: я почти уверен, что вы забыли добавить 's' к <all_url>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...