6

Ogni volta che provo a leggere da un cookie usando la funzione chrome.cookies.get() ottengo questo errore:Perché chrome.cookies non è definito in uno script di contenuto?

TypeError: Cannot read property 'get' of undefined. 

sto chiamando la funzione nel mio file content.js, e sarà eseguito solo su twitter.com (quella parte lavori).

Ecco il mio file manifesto:

{ 
    "manifest_version": 2, 

    "name": "Twitter-MultiSignin", 
    "description": "twiter sign in", 
    "version": "1.0", 
    "permissions": [ "cookies", "alarms" , "http://*/*", "https://*/*", "storage"], 
    "content_scripts": [{ 
    "matches": ["http://twitter.com/*","https://twitter.com/*"], 
    "js": ["jquery.js","content.js"] 
    }], 
    "browser_action": { 
    "default_icon": "icon.png", 
    "default_popup": "popup.html" 
    } 
} 

Ecco il mio content.js (avvisa sempre sulla pagina Twitter in modo che funziona bene):

$(function() { 
    alert('got here'); 
    try{ 
     chrome.cookies.get({ url: 'https://twitter.com', name: 'auth_token' }, function (cookie){ 
      alert(cookie.value); 
     }); 
    }catch(err){ 
     //do nothing 
     alert(err); 
    } 
    try{ 
     chrome.cookies.get({ url: 'https://twitter.com', name: 'twid' }, 
     function (cookie) { 
      if (cookie) { 
       twid_raw = cookie.value; 
       twid = twid_raw.split('=')[1] 
       alert(twid); 
      } 
      else{ 
       alert("not found"); 
      } 
     }); 
    }catch(err){ 
     //do nothing 
    } 
}) 

risposta

10

Citando il docs about content scripts:

[Content scripts cannot] Use chrome.* APIs (except for parts of chrome.extension)

Quindi, per utilizzare l'API chrome.cookies, è necessario farlo da una pagina di sfondo, c comunicare con lo script di contenuto, se necessario.

+0

Quindi, come dovrei implementarlo, in modo che quando l'utente apre Twitter otterrà i cookie? – parasm

+1

@ Oxygen- L'API implica che Twitter non deve essere aperto per poter interrogare i cookie. Sono legati a un particolare URL e non a una vera scheda aperta. Devi aggiungere uno script di sfondo e puoi eseguire query da lì ogni volta che lo desideri. – Xan

+1

oh buon punto, ma voglio leggere i cookie solo sulla pagina di Twitter caricati e quindi essere in grado di carpire alcune informazioni dalla pagina twitter. Qualche idea su come potrei implementare in uno script di background? – parasm

Problemi correlati