2014-04-13 13 views
6

Ilekroć próbuję odczytać z pliku cookie za pomocą funkcji chrome.cookies.get() otrzymuję ten błąd:Dlaczego pliki chrome.cookies są niezdefiniowane w skrypcie treści?

TypeError: Cannot read property 'get' of undefined. 

Wołam funkcję w moim pliku content.js, a to będzie działać tylko na twitter.com (to część Prace).

Oto mój plik manifestu:

{ 
    "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" 
    } 
} 

Oto moje content.js (zawsze alarmuje na stronie twitter tak, że działa prawidłowo):

$(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 
    } 
}) 

Odpowiedz

10

Cytowanie docs about content scripts:

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

Aby korzystać z interfejsu API chrome.cookies, należy to zrobić ze strony w tle, c w razie potrzeby komunikować się ze skryptem treści.

+0

W jaki sposób mogę to zaimplementować, aby po otwarciu Twittera otrzymywał pliki cookie? – parasm

+1

@ Oxygen - API oznacza, że ​​Twitter nie musi być otwarty, aby można było wysyłać zapytania do plików cookie. Są powiązane z konkretnym adresem URL, a nie z rzeczywistą otwartą kartą. Musisz dodać skrypt w tle, i możesz stamtąd zapytać, kiedy tylko chcesz. – Xan

+1

Dobra sprawa, ale chcę czytać ciasteczka tylko na stronie Twittera, a następnie zeskanować niektóre informacje ze strony Twittera. Jakieś pomysły na to, jak mógłbym wprowadzić scenariusz w tle? – parasm

Powiązane problemy