2011-09-27 9 views

risposta

83

Dal momento che Chrome 22 si dovrebbe usare chrome.runtime.getManifest(). See docs here.

Così ora è semplice come:

var manifest = chrome.runtime.getManifest(); 
console.log(manifest.name); 
console.log(manifest.version); 
+0

+1, assicurati di verificare se è disponibile per primo. if (typeof (chrome.runtime.getManifest) == 'function') { – fedmich

+4

A causa della funzionalità di aggiornamento automatico di Chrome che non può essere disabilitata da un utente ordinario, suppongo che attualmente nessuno usi la versione successiva 22. Ma è una buona idea includi al manifest: ** "minimum_chrome_version": "22.0.0.0" ** –

5

Penso che questo è ciò che stai cercando http://www.martinsikora.com/accessing-manifest-json-in-a-google-chrome-extension

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; 

})(); 

E questo è tutto. Questo breve snippet di codice carica l'oggetto manifest e lo inserisce tra le altre API chrome.*. Quindi, ora è possibile ottenere tutte le informazioni desiderate:

// current version 
chrome.manifest.version 

// default locale 
chrome.manifest.default_locale 
+0

Perfetto, questo ha funzionato. L'unica cosa che dovevo cambiare era il nome dell'IIFE da manifestare invece di chrome.manifest. – bittersweetryan

Problemi correlati