chrome扩展程序没有使用chrome.extension.getURL检索本地文件?

时间:2015-03-25 19:33:48

标签: google-chrome

我收到错误Uncaught TypeError: Cannot read property 'getURL' of undefined

的script.js

var app = {
    init: function() {        
        var c = document.createElement("img");
        c.src = chrome.extension.getURL("logo.png");
        document.body.appendChild(c);
    }
}
app.init();

的manifest.json

{
    "name": "my extension",
    "version": "1.0",
    "manifest_version": 2,
    "content_scripts": [
        {        
            "matches": ["<all_urls>"],
            "css": ["style.css"],
            "js": ["contentScripts.js"]
        }
    ],
    "web_accessible_resources": [
        "script.js",
        "logo.png"
    ],
    "permissions": ["<all_urls>"]
}

contentScripts.js

var a = document.createElement("script");
    a.src = chrome.extension.getURL("script.js");
var b = document.createElement("style");
    b.src = chrome.extension.getURL("style.css");

(document.head||document.documentElement).appendChild(a);
(document.head||document.documentElement).appendChild(b);

不确定我做错了什么。 SO上的其他帖子表明本地文件必须包含在manifest.json中。我注入的javascript工作正常,但chrome.extension.getURL方法似乎不起作用?

1 个答案:

答案 0 :(得分:0)

脚本在页面内容中运行,而不是扩展名,因此chrome.extension.getURL不可用。在将脚本标记添加到页面之前,您需要在扩展中执行getURL调用。

这样想:忘记你添加了标签。如果页面有来自原始服务器的脚本引用,那么它如何知道chrome是否可以调用getURL?它不能。它需要知道完整的扩展URL(getURL的输出)。所以让你的脚本看起来像那样。