摘要:
基本上,我使用后台页面来监听事件,例如:onStartup、onInstalled和cookies.onChanged,以决定在单击browserAction时向用户显示哪个页面。我的问题涉及后者以及它是如何触发的。
代码示例:
chrome.cookies.onChanged.addListener(function(info){
if(info.cookie.name === "dummycookie"){
/* Possibilities of info.cause (as described in the docs):
* evicted
* expired
* explicit (it's used when setting or removing a cookie)
* expired_overwrite
* overwrite
*/
if(info.cause == "overwrite" || (info.cause == "explicit" && !info.removed)){
// Cookie was set (explicit or overwrite)
chrome.browserAction.setPopup({ popup: "dummy1.html" });
}
else{
// Cookie was removed (evicted, expired or expired_overwrite)
chrome.browserAction.setPopup({ popup: "dummy2.html" });
}
}
});
事实上,尽管上述代码处理显式调用(cookies.set & cookies.get)没问题,但当cookie的生存期过期时似乎并不会触发。
通过我进行的调试会话,在cookie的预期过期日期之后只有在进行显式调用时才会触发代码。
例如,如果我在所谓的过期时间之后发起类似cookies.getAll()的调用,则浏览器会意识到cookie已过期,然后才会触发事件。
我有遗漏什么吗?如果我误用了cookie API或者我对其机制理解错了,能否有人给我启示呢?
非常感谢您的帮助!
最好的问候,
chrome.cookies.get
获取cookie并根据结果更新文档。 - Rob W