我已经找到了答案,但似乎我找不到答案。 我的计划是在添加cookie后显示警告。
我使用setTimeout在5秒后设置了cookie。
脚本
setTimeout(
function(){
document.cookie = "username=Billy Joe";
}, 5000);
我的方法是使用此代码检查cookie是否存在。
if(!getCookie("username")){
alert("Cookie doesn't exists");
}else{
alert("Cookie exists");
}
但看起来就像只检查第一次加载,而不是在添加cookie之后。
我的问题是如何在添加cookie后显示提醒?
非常感谢
答案 0 :(得分:0)
我的问题是如何在添加Cookie后显示提醒?
很简单,只需在添加cookie后进行检查即可!
function checkCookie () {
alert(getCookie("username") ? "Cookie exists!" : "Cookie doesn't exist!");
}
setTimeout(function () {
document.cookie = "username=Billy Joe";
checkCookie();
}, 5000);
答案 1 :(得分:0)
基本上setTimeout总是异步运行所以基本上你的if块在设置cookie值之前运行。你应该在添加cookie后使用函数。例如,您的超时功能是在5秒后运行/设置cookie值,但您的alter会立即读取setTimeout代码
以下示例适用于您。
function checkCookie(){
if(!getCookie("username")){
alert("Cookie doesn't exists");
}else{
alert("Cookie exists");
}
}
// check before add
checkCookie()
setTimeout(function(){
document.cookie = "username=Billy Joe";
// check after add
checkCookie();
}, 5000);
答案 2 :(得分:-1)
不幸的是,我在此上下文中发现了错误的API,因为该API是针对Mozilla Web扩展的。要注意它。唯一可行的技术是使用setInterval
函数(参见https://www.experts-exchange.com/questions/22641766/Javascript-Call-function-as-soon-as-cookie-value-changes-Set-listener-for-changed-cookie-value.html)。但是,我宁愿不在该函数中设置cookie,因为它没有意义;):
var handledCookie = false; // Was the cookie already handled?
var cookieCheckId = undefined; // The id of the checker
var handleCookie = function() {
if (!getCookie("username")){
alert("Cookie doesn't exists");
} else {
clearInterval(cookieCheckId); // Unset the check
handledCookie = true; // Set the cookie handled
alert("Cookie exists");
}
};
handleCookie();
if (!handledCookie) {
cookieCheckId = setInterval(handleCookie, 5000); // Handle the cookies
}
因此,如果在代码内部或外部创建cookie,则handleCookie
函数将被调用一次。检查全部完成5秒。如果找到了cookie,则将禁用该检查(clearInterval
)。
<强>错误!之前的回答:
你可以处理事件。如果cookie发生变化,则会触发一个事件(参见https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/cookies/onChanged)。
例如,您可以使用以下内容:
browser.cookies.onChanged.addListener(function(changeInfo) {
if(!getCookie("username")){
alert("Cookie doesn't exists");
} else {
alert("Cookie exists");
}
});
您还可以查看changeInfo
并使用该信息来识别您的Cookie:
browser.cookies.onChanged.addListener(function(changeInfo) {
let cookie = JSON.stringify(changeInfo.cookie);
if (cookie.name === 'username') {
alert("Cookie exists");
}
});
然而,你没有检查你的cookie是否不存在。