chrome.tabs.executeScript: не удается получить доступ к URL-адресу chrome://

Я новичок в развитии расширения хрома.

Проблема заключается не в доступе к chrome://url, я не хочу ничего редактировать там, но проблема заключается в выполнении chrome.tabs.executeScript(), который используется для инъекции скриптов.

Я пытаюсь запустить фоновый скрипт с использованием chrome.tabs.executeScript, но он дает следующие ошибки:


Unchecked runtime.lastError при запуске tabs.executeScript: не удается получить доступ к URL-адресу chrome://

У меня есть следующий код:

манифест

{
    "name": "BrowserExtension",
    "version": "0.0.1",
    "manifest_version": 2,
    "description" : "Description ...",
    "icons": { "16": "icons/16x16.png", "48": "icons/48x48.png", "128": "icons/128x128.png" },
    "background" : {
        "scripts": ["background.js"]
    },      
    "permissions": [
        "tabs",
        "background",
        "http://*/*",
        "https://*/*"
    ],
    "browser_action": {
        "default_icon": {
            "19": "icons/19x19.png",
            "38": "icons/38x38.png"
        },
        "default_title": "That the tool tip"
    }   
}

Background.js

console.log("background.js : click()");
chrome.tabs.executeScript(null, {file: "jquery.min.js"}, function(){
    chrome.tabs.executeScript(null, {file: "auto.js"}, function(){
        chrome.tabs.executeScript(null, {file: "script.js"}, function(){
            //all injected
        });
    });
});

script.js

$(function()
{
    var input = $('input');
    $.each(input,function(index,element){
        var area = new AutoSuggestControl(element.id);
    });    

    var ta = $('textarea');
    $.each(ta,function(index,element){ var area = new AutoSuggestControl(element.id);});

    return 1;
});

auto.js является предварительно скомпилированным js файлом, который отлично работает, когда используется один в html файле. Целью расширения является предоставление автозаполнения при записи в текстовое поле. Спасибо за тонну за помощь.

Ответы

Ответ 1

chrome://URL-адреса заблокированы по соображениям безопасности. Google не хочет, чтобы вы изменили параметры появления или изменения хром, не зная этого. при загрузке вашего расширения он немедленно выполняет эти файлы на странице chrome://extensions. Если вы хотите выполнить свой скрипт на каждой вкладке, к которой пользователь идет, вы должны использовать:

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
    //code in here will run every time a user goes onto a new tab, so you can insert your scripts into every new tab
});