从manifest.json中读取版本

Ben*_*ann 41 google-chrome-extension

Chrome扩展程序是否有办法从manifest.json读取属性?我希望能够阅读版本号并在扩展中使用它.

nfm*_*nfm 69

您可以使用它chrome.runtime.getManifest()来访问清单数据 - 您不需要获取它并解析它.

var manifestData = chrome.runtime.getManifest();
console.log(manifestData.version);
console.log(manifestData.default_locale);
Run Code Online (Sandbox Code Playgroud)

  • 请注意``chrome.app.getDetails()`已被`chrome.runtime.getManifest()`取代. (12认同)

Ond*_*rej 15

snipet chrome.app.getDetails()不再工作,返回错误:

TypeError:Object#没有方法'getDetails'

你想要chrome.runtime.getManifest()改用.


Ben*_*ris 7

我用这种方式.

chrome.manifest = (function() {

    var manifestObject = false;
    var xhr = new XMLHttpRequest();

    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4) {
            manifestObject = JSON.parse(xhr.responseText);
        }
    };
    xhr.open("GET", chrome.extension.getURL('/manifest.json'), false);

    try {
        xhr.send();
    } catch(e) {
        console.log('Couldn\'t load manifest.json');
    }

    return manifestObject;

})();
Run Code Online (Sandbox Code Playgroud)

就这样.这个简短的代码片段加载了清单对象,并将其放在其他chrome.*API中.那么,现在您可以获得所需的任何信息:

// current version 
chrome.manifest.version

// default locale
chrome.manifest.default_locale
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果要在某处存储任意JSON配置,此方法仍然适用,因为向manifest.json添加自定义键/值将引发警告.我有一个单独的data.json存储服务器的URL(dev/production不同),我用上面的方法解析它. (2认同)

tar*_*dyp 5

从 Chrome 22 开始,你应该使用chrome.runtime

console.log(chrome.runtime.getManifest().version);
Run Code Online (Sandbox Code Playgroud)

  • 这基本上是 Ondrej 的回答。并且代码片段仅对完整的 js/html/css 页面有意义,而扩展则不是。 (2认同)