2016-07-26 34 views
1

Ich habe derzeit indexedDB auf google.com-Domain. Ich möchte in der Lage sein, es von Google Chrome Extension zu lesen. Wie kann ich das erreichen? Muss ich irgendwelche spezifischen Berechtigungen hinzufügen? i derzeit haben:Zugriff auf IndexedDB (der aktuell geöffneten Domain/Tab) von Chrome-Erweiterung

"permissions": [ "tabs", "bookmarks", "unlimitedStorage", "*://*/*", "identity", "https://*.google.com/*", "https://ssl.gstatic.com/", "https://www.googleapis.com/", "https://accounts.google.com/" ], 

mit welchem ​​Befehl kann ich das tun? Danke!

Edit: Ich habe readed ich es von Content-Skript zugreifen kann (aslong als Registerkarte mit Domäne ist offen - was mein Fall ist), aber ich weiß nicht, wie das zu tun ...

+2

Nichts besonderes erforderlich. Da Sie dies in Inhaltsskripten tun und sich in derselben Domäne wie die Seite befinden, können Sie auf indexedDB zugreifen, da es sich um ein normales Skript handelt. https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Using_IndexedDB –

Antwort

0

Für alle noch meine Lösung für dieses Problem interessiert, -

dies wird in der Content-Skript der Erweiterung gelegt -

chrome.extension.onConnect.addListener(function(port) { 
if(port.name == "extension_request") { 
    port.onMessage.addListener(function(msg) { 
    if (msg.db) { 
     window.indexedDB.webkitGetDatabaseNames().onsuccess = function(sender,args) 
     { 
     var r = sender.target.result; 
     if(r.contains(msg.db)){ 
      var openRequest = indexedDB.open(msg.db); 
      // your code 
      port.postMessage({foo: bar}); // your result which you want to send   
     } 
     } 
    } 
} 
} 

und dies ist für Skript Hintergrund oder Popup -

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { 
     var port = chrome.tabs.connect(tabs[0].id,{name: "extension_request"}); 
      port.postMessage({db: "database_name_example"}); // send database name 
      port.onMessage.addListener(function(msg) { 
       if (msg.foo) { 
       // do your stuff in extension 
       } 
      } 
}