Ошибка разработки расширения Chrome: ресурсы должны быть перечислены в web_accessible_resources

Я новичок в написании расширения для Chrome. Я пытаюсь открыть шаблон ejs внутри своего сценария внедренного содержимого, но при создании нового EJS ({}) получаю ошибку ниже в content_script.js.

«Запрещение загрузки chrome-extension: //eadcfllkpeiejpedposonemnmmpnggie/content.html.ejs. Ресурсы должны быть указаны в ключе манифеста web_accessible_resources, чтобы их могли загружать страницы за пределами расширения».

Примечание. Я добавил ресурс в web_accessible_resource

Manifest.json

    {
    "name"              : "test",
    "description"       : " app",
    "version"           : "1.0",
    "manifest_version"  : 2,
    "browser_action"    :{
                            "default_icon"   : "images/icon.png"
                        },
    "permissions"       : ["tabs","notifications","contextMenus","background","http://*/*","https://*/*","<all_urls>"],
    "options_page"      : "views/options.html",
    "icons"             : {"16"         : "images/icon-16.png"//Icon context menu},
    "background"        : {
                            "page"          : "views/background.html",
                            "js"            : ["scripts/jquery-1.10.2.min.js"]
    },
    "web_accessible_resources": ["views/content.html.ejs"]
}

Background.js

    'use strict';

document.addEventListener("DOMContentLoaded", function(tab){
    chrome.contextMenus.create({
        title : "Add as reminder",
        id    : "rappelSelection",
        contexts: ["selection"],
        onclick: function(info,tab){addContent(info,tab)}
    })
});


function addContent(info, tab){
    var details = {};
    details.text = info.selectionText;
    chrome.tabs.executeScript(tab.id, {
        file : "scripts/jquery-1.10.2.min.js"
    });

    chrome.tabs.executeScript(tab.id, {
        file : "scripts/ejs_min.js"
    });

    chrome.tabs.executeScript(tab.id, {
        file : "scripts/content_script.js"
    });

    chrome.tabs.getSelected(null,function(tab){
        chrome.tabs.sendRequest(tab.id, {details: details}, function(response){
            console.log(response);
        });
    });
}

content_script

chrome.extension.onRequest.addListener(function newContent(request, sender, sendResponse){
        var template_path = chrome.extension.getURL('content.html.ejs');
        var data = {content: request.details.text };
        var template = new EJS({url:template_path}).render(data);
        $("body").append(template);
        sendResponse({contentText: "goodbye"}); 
    });

person Ross    schedule 26.01.2015    source источник
comment
В вашем манифесте перечислены "views/content.html.ejs", в то время как ваш сценарий пытается загрузить chrome.extension.getURL('content.html.ejs') без части views. Голосование за закрытие за опечатку.   -  person Xan    schedule 26.01.2015
comment
Тем не менее, вам следует обновить API, которые вы используете. _1 _ / _ 2_ давно устарели - используйте chrome.tabs.sendMessage и chrome.runtime.onMessage.   -  person Xan    schedule 26.01.2015
comment
Спасибо обновлю и проверим   -  person Ross    schedule 26.01.2015


Ответы (1)


Методу getURL требуется путь к файлу из корня, а не только имя файла.

var template_path = chrome.extension.getURL('content.html.ejs');

to

 var template_path = chrome.extension.getURL('views/content.html.ejs');

Исправлена ​​проблема. Спасибо, @Xan нужна была еще пара глаз, чтобы это увидеть :)

person Ross    schedule 26.01.2015