我正在嘗試編寫一個適用於YouTube的Chrome擴展程序,並且需要訪問YouTube的某些Cookie信息。我似乎無法讓我的擴展程序看到任何cookie。 (儘管我可以在Chrome的「Inspect Element」開發者部分的資源下看到它們)。訪問Chrome擴展程序中的Cookie
我很確定我已經在manifest 2文件中正確設置了權限,因爲當我拿出「cookies」權限來測試它時,我收到一個錯誤,提示「Can not call method'getAll'」。我目前的問題是沒有cookie被回調函數返回。
{
"manifest_version": 2,
"name": "YouTube Viewer",
"description": "This extension is for YouTube videos.",
"version": "1.7",
"icons": {
"128": "ytblack.png"
},
"permissions": [
"cookies",
"https://www.youtube.com/",
"http://www.youtube.com/",
"tabs",
"storage"
],
"background": {
"scripts": ["bootstrap.js"],
"persistent": false
},
"page_action": {
"default_title": "YT View",
"default_icon": "ytblack.png",
"default_popup": "popup.html"
}
}
我的清單調用bootstrap.js。在bootstrap.js裏面有一個對另一個文件ytview.js的調用,但我不關心這個。該代碼在工作正常。但是在bootstrap.js中,當我查看「後臺頁面」控制檯時,我的cookies.length返回爲0。 「回撥cookie的日誌沒有問題」。正確着火。但後來它說「cookies.length = 0」。就像我說的,我知道存在的cookie是因爲我可以在資源中看到它們。
chrome.tabs.onUpdated.addListener(function(id, info, tab){
// decide if we're ready to inject content script
if (tab.status !== "complete"){
console.log("not yet");
return;
}
if (tab.url.toLowerCase().indexOf("youtube.com/watch") === -1){
console.log("you are not on a YouTube video");
return;
}
chrome.cookies.getAll({domain: "www.youtube.com"}, function(cookies) {
console.log('Callback for cookies came in fine.');
console.log('cookies.length=' + cookies.length);
for(var i=0; i<cookies.length;i++) {
console.log('cookie=' + cookies[i].name);
}
});
chrome.tabs.executeScript(null, {"file": "ytview.js"});
});
任何想法爲什麼沒有返回cookie?也許在.getAll語句中帶有「domain」的東西?我嘗試了很多組合,例如www.youtube.com,youtube.com,https://www.youtube.com,但沒有運氣。