我想知道是否可以使用 Javascript 创建仅会话 cookie。当浏览器关闭时,cookie 应该被删除。
我不能在服务器上使用任何东西,因为该网站只是 HTML ......所以没有使用服务器端脚本。
我在这里读到了一些关于这个的东西:http : //blog.lysender.com/2011/08/setting-session-only-cookie-via-javascript/ 但我找不到关于这个的更多信息......所以我是想知道这个方法是否可靠。
我想知道是否可以使用 Javascript 创建仅会话 cookie。当浏览器关闭时,cookie 应该被删除。
我不能在服务器上使用任何东西,因为该网站只是 HTML ......所以没有使用服务器端脚本。
我在这里读到了一些关于这个的东西:http : //blog.lysender.com/2011/08/setting-session-only-cookie-via-javascript/ 但我找不到关于这个的更多信息......所以我是想知道这个方法是否可靠。
对,那是正确的。
不放入expires
部件将创建会话 cookie,无论它是在 JavaScript 中创建的还是在服务器上创建的。
一个更简单的解决方案是使用sessionStorage
,在这种情况下:
var myVariable = "Hello World";
sessionStorage['myvariable'] = myVariable;
var readValue = sessionStorage['myvariable'];
console.log(readValue);
但是,请记住,sessionStorage
将所有内容保存为字符串,因此在处理数组/对象时,您可以使用 JSON 来存储它们:
var myVariable = {a:[1,2,3,4], b:"some text"};
sessionStorage['myvariable'] = JSON.stringify(myVariable);
var readValue = JSON.parse(sessionStorage['myvariable']);
只要浏览器打开,页面会话就会持续,并在页面重新加载和恢复后继续存在。在新选项卡或窗口中打开页面将导致启动新会话。
因此,当您关闭页面/选项卡时,数据将丢失。
要使用 java 脚本创建仅会话 cookie,您可以使用以下内容。这对我有用。
document.cookie = "cookiename=value; expires=0; path=/";
然后获取cookie值如下
//get cookie
var cookiename = getCookie("cookiename");
if (cookiename == "value") {
//write your script
}
//function getCookie
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1);
if (c.indexOf(name) != -1) return c.substring(name.length, c.length);
}
return "";
}
好的,为了支持 IE,我们可以完全离开“过期”并可以使用它
document.cookie = "mtracker=somevalue; path=/";
使用以下代码设置会话 cookie,它将一直工作到浏览器关闭。(确保不要关闭标签)
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+ d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return false;
}
if(getCookie("KoiMilGaya")) {
//alert('found');
// Cookie found. Display any text like repeat user. // reload, other page visit, close tab and open again..
} else {
//alert('nothing');
// Display popup or anthing here. it shows on first visit only.
// this will load again when user closer browser and open again.
setCookie('KoiMilGaya','1');
}