- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
基本上,我使用后台页面来监听事件,例如: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 生命周期到期时触发。
根据我进行的调试 session ,只有在 cookie 的预期到期日期之后进行显式调用时才会触发代码。
例如如果我在假定的过期时间后调用 cookies.getAll() 之类的调用,浏览器就会意识到 cookie 已过期,然后才会触发事件。
我错过了什么吗?如果我滥用了 cookies API 或者我误解了它背后的机制,谁能告诉我吗?
非常感谢任何帮助!
最好的问候,
最佳答案
对于罕见的操作,例如打开 browser action popup ,你最好积极一点query用于相关 cookie 最新状态的 cookie API,而不是通过 chrome.cookies.onChanged
监听 cookie 更改,因为:
示例(popup.js,需要 activeTab 和 cookie 权限):
// Example: Get the value of the _gaq cookie for the top-level frame of the
// current tab.
chrome.tabs.query({
active: true,
currentWindow: true
}, function(tabs) {
// Need activeTab permission to read url, e.g. http://example.com/home
var url = tabs[0].url;
chrome.cookies.get({
url: url,
name: '_gaq'
}, function(cookie) {
// TODO: Do something with cookie, e.g. by updating the view (via DOM).
});
});
关于javascript - Chrome 扩展程序的持久性 cookie 没有正确过期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28906943/
当您在 memcached 中设置 key 过期时,它实际上是在过期时被删除,还是在请求 key 时被删除(get)并且有效期已过。换句话说,过期会自动从 memcached 中删除值,还是简单地将其
Microsoft 是否已将客户端 secret 的有效期更改为最长 2 年?不能再选择“从不”了吗? 最佳答案 我自己也遇到了这个问题。您可以使用Powershell设置添加2年以上的凭据。所以我猜
我正在尝试对我网站上的 csv 文件强制禁止缓存。 我根据 apache 的文档将这些行添加到 httpd.conf: ExpiresActive On ExpiresDefault A0 Expi
我对 Cookie 不熟悉,希望让此 Cookie 在我的注销页面上过期 这是我设置 cookie 的位置: setcookie("loggood", "YES", $expire, "/",
MySQL 是否有某种功能可以在 x 秒后使特定行过期? 例如,我必须以下数据库: users id - integer name - string subscriptions
我的机器上安装了 Matlab Compiler Runtime。它工作正常,但现在当我运行一些需要它的代码时,我得到了这个错误: Failed to initialize MCR Instance:
当我从 PayPal 收到 IPN 时,我不想立即处理它,而是将消息排队,然后使用调度程序处理它。 因此,有一点让我担心 - 如果我将一条消息排队并只处理它(包括'_notify-validate'验
关于 PHP session 过期的问题。 如果该用户有一段时间不活动(出于测试目的,5 秒),我需要我的服务器丢弃 session 信息。 我看过this question尤其是 Gumbo(+28
我有一个 session ,在 30 分钟不活动后或 23.4 小时后被销毁。 我遇到的问题是无论事件如何, session 都会在 30 分钟后被销毁。因此,如果用户在 23.4 小时内一直处于事件
我一直在网上搜索并找到了许多奇怪的答案,而且我几乎尝试了所有这些答案。我的问题是这样的。我的登录页面包含: FormsAuthenticationTicket ticket = new FormsAu
我正在构建一个表单,我必须将数据存储在 HTML5 的 sessionStorage 中 我不知道 sessionStorage 何时过期。谁能告诉我 sessionStorage 的过期时间? 最佳
在我的应用程序中,我有一个必须始终有效的访问 token (Spotify 的)。当此访问 token 过期时,应用必须每 60 分钟刷新一次 token 端点并获取另一个访问 token 。 Aut
我们的办公室有一个简单的闭路电视系统,可以显示我们每个安全摄像头的实时图像。闭路电视系统没有 API 或任何提取实时图像的方法。但是,您可以通过创建带有图像链接的基本 HTML 页面从另一个浏览器查看
我正在基于DotNetOpenAuth实现OAuth2授权/资源服务器。我的服务器将发出生命周期很长的访问 token 。这些 token 将在iOS设备上使用。我看到的流程是这样的:1)要求用户在i
请帮助我在 Varnish 配置中添加过期 header 。 max_age 已在 vcl_fetch 中定义,需要根据 max_age 添加 expires header。 最佳答案 通常不需要设置
我正在开发一个必须使用 session 超时的应用程序。 问题是用户经常错过 session 超时并丢失数据。我已经在 javascript 中实现了一个小型 session 管理器,如果浏览器中有一
我有一个应用程序,可以从我的Instagram帐户中提取数据。 我曾经授权过此应用一次,并获得了访问 token 。但是我很担心 如果该 token 过期怎么办?我是否应该在每次 token 到期?
我在数据表中有多个复选框,它们具有一个名称和不同的值,我可以通过以下代码为所有选中的复选框存储 cookie $(document).ready(function(){ $('i
hibernate 3.3.x、ehcache 2.2.x The following error occurs, when I try to publish a lots of users in a
在 Azure 门户的通知中心的“配置”选项卡上,我能够生成主键和辅助键。我了解这些是获得对 Azure API 的编程访问权限所必需的 - 允许我的客户端应用程序创建注册并发送消息。 谁能解释一下:
我是一名优秀的程序员,十分优秀!