2012-12-08 41 views
1

摘录一个cookie:检查是否通过Chrome扩展存在从清单

"permissions": [ 
    "tabs", 
    "cookies", 
    "*://*/*" 
    ] 

我试过Popup.js的代码(没有工作):

function getCookie(name) { 
var dc = document.cookie; 
var prefix = name + "="; 
var begin = dc.indexOf("; " + prefix); 
if (begin == -1) { 
    begin = dc.indexOf(prefix); 
    if (begin != 0) return null; 
} 
else 
{ 
    begin += 2; 
    var end = document.cookie.indexOf(";", begin); 
    if (end == -1) { 
    end = dc.length; 
    } 
} 
return unescape(dc.substring(begin + prefix.length, end)); 
} 


function doSomething() { 
var myCookie = getCookie("TestCookie"); 

if (myCookie == null) { 
document.write("<p>unable to load</p>"); 
throw "stop execution"; 
} 
else { 
document.write("<p>loaded</p>"); 
    // do cookie exists stuff 
} 
} 

我推测,Chrome扩展不支持完整的java,尽管我不确定。我怎么能处理这种情况?

+0

如果你想阅读延伸饼干,你应该使用chrome.cookies.get或[chrome.cookies.getAll](http://developer.chrome.com/extensions/cookies.html#method-getAll)方法。 Chrome网站上有一个例子 - [Cookie API测试扩展](http://developer.chrome.com/extensions/samples.html#2b0f7d02f3ebd51358ed54ef59dceebb)。 – Stan

+0

谢谢Stan,但是这根本不是很有帮助。这就好像说在干草堆里有一根针,却没有说出它在哪个区域。我已经看到了,但是我还没有想出如何去实现我的目标。 – Rosenberg

+0

如果你看到了这个,为什么你没有在你的代码中使用它? Cookie API非常简单和最小化。任何答案,如果它出现,都会以某种方式要求你遵循现有的例子。 – Stan

回答

0

从你的问题,你不明白你想要什么饼干。如果你在你的分机中设置了cookie,你可以通过document.cookie访问它,但它不是保存扩展信息的正确方法,因为有更好的东西,如localStoragechrome.storage。但是,如果你需要得到网站的Cookie在扩展的最好的办法是这样的:

chrome.cookies.get({ url: 'http://example.com', name: 'somename' }, 
    function (cookie) { 
    if (cookie) { 
     console.log(cookie.value); 
    } 
    else { 
     console.log('Can\'t get cookie! Check the name!'); 
    } 
}); 

不要忘了,包括权限进入清单:

"permissions": [ 
    "cookies", 
    "*://*.example.com/*" 
]