Chrome Расширение: невозможно получить доступ к содержимому URL, начинающемуся с "chrome -extension: //" - PullRequest
1 голос
/ 20 апреля 2020

В своем расширении я создаю вкладку и открываю в ней html файл с именем results.html из моего фонового скрипта с именем background.js. После создания вкладки я внедряю файл javascript с именем results.js в эту вновь созданную вкладку.

Но он выдает следующую ошибку в моей консоли background.js:

Unchecked runtime.lastError: Cannot access contents of url "chrome-extension://hcffonddipongohnggcbmlmfkeaepfcm/results.html". 
Extension manifest must request permission to access this host.

Обращаясь к решениям по другим вопросам, связанным со стековым потоком, я попытался добавить следующие разрешения в manifest.json:

  1. <all_urls>
  2. chrome-extension://* Выдана ошибка: Permission 'chrome -extension : // * 'неизвестно или шаблон URL неверен.

Но ничего из вышеперечисленного не сработало.

Также предполагается, что results.js после ввода отправляет сообщение на background.js чтобы получить в ответ некоторые данные для подачи в results.html.

Мой код:

манифест. json

{
  "manifest_version":2,
  "name":"Extension Name",
  "description":"This is description of extension.",
  "version":"1.0.0",
  "icons":{"128":"icon_128.png"},
  "browser_action":{
      "default_icon":"icon.png",
      "default_popup":"popup.html"
  },
  "permissions":["activeTab", "background", "tabs", "http://*/*", "https://*/*","<all_urls>"],
  "background": {
      "scripts": ["background.js"],
      "persistent": false
  },
  "web_accessible_resources": ["addAlias.js","results.html","results.js"]
}

фон. js

/*Some code*/
function loadResult()
{
  chrome.tabs.query({active:true},function(tabs){
    //creating tab and loading results.html in it
    chrome.tabs.create({url : 'results.html'}, function(tab){
      //injecting results.js file in the tab
      chrome.tabs.executeScript(tab.id, {file: 'results.js'});  
    });
  });
}
/*somecode*/
if(/*some condtion*/)
{
    loadResult(); //calling function 
}


chrome.runtime.onMessage.addListener(function(request,sender,sendResponse)
{
  //Listening for results.js request for data
  if( request.greeting === "sendResults")
    {
      console.log(" Results request received .");
      //sending data back to results.js
      sendResponse({failed:failedToAdd,succeed:succeedToAdd});

    }
}

результаты. js

/*Some code*/
console.log("I got loaded");
console.log("Now requesting for sendResults");

//Below sending request for data
chrome.runtime.sendMessage({greeting: "sendResults"},
      function (response) {
        console.log('Got data from Background.js');
        /*Some Code*/
      }
  );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...