javascript - 在移动 session 中模拟 session cookie?

标签 javascript jquery mobile cookies weinre

乍一看,我惊讶地发现我对 session cookie 在移动设备上的行为方式的想法被现实覆盖了。

在普通桌面浏览器上,只要浏览器 session 处于事件状态,就会存储 session cookie。如果最后一个浏览器窗口/进程关闭, session 应该关闭。

现在在移动设备上,您几乎不会关闭浏览器应用程序,只需将其发送到后台即可。

我发现我的 Sony Xperia Ray 和 Android 4 session cookie 没有过期,即使我清除了浏览器进程。但在三星平板设备上它会。我不知道 iOS 设备如何以这种方式运行。

这是一个问题!?我应该怎么做才能解决它?

现在,我决定让 cookie 在一天内过期。但我对此不是很满意。
我应该降低生命周期吗?也许到 8 小时?

最佳答案

采用 HTML5 方式并使用 sessionStorage 对您来说有意义吗?

这样您就可以独立于不同设备处理浏览器 session 的方式,因为 HTML5 session 存储是按窗口存储的,因此它仅限于浏览器窗口的生命周期。

基本上所有移动设备都支持 sessionStorage(参见 here),您可以使用 jQuery-Session-Plugin(遵循 this link)之类的框架/插件为您处理 session 数据(并提供回退 为不支持 sessionStorage 的旧浏览器设置 session cookie。

编辑:为了展示 sessionStorage 与 localStorage 的行为,我创建了一个 fiddle (出于演示目的)使用 sessionStorage 存储 div 的宽度,使用 localStorage 存储同一个 div 的高度:

var randomWidth,
    randomHeight;
if (!(randomWidth= $.session.get("randomWidth"))) {    // assignment
    randomWidth = Math.random() * 300;
    $.session.set("randomWidth", randomWidth, true);
    console.log("just assigned and stored in sessionStorage: randomWidth: " + randomWidth);
} else {
    console.log("from sessionStorage: randomWidth: " + randomWidth);
}
if (!(randomHeight= $.domain.get("randomHeight"))) {    // assignment
    randomHeight = Math.random() * 300;
    $.domain.set("randomHeight", randomHeight, true);
    console.log("just assigned and stored in localStorage: randomHeight: " + randomHeight);
} else {
    console.log("from localStorage: randomHeight: " + randomHeight);
}
$(".test").css({width: randomWidth, height: randomHeight});

查看控制台。您会看到,当您启动客户端浏览器的新 session 时,宽度会发生变化,而高度会保持不变(因为本地存储是按域分配的)。

这是 link to jsfiddle

关于javascript - 在移动 session 中模拟 session cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15202521/

相关文章:

javascript - Algolia 和 WordPress 搜索页面突然无法工作,控制台显示 "Uncaught typeError"

javascript - 如何从 JQuery Ajax 请求中获取 "data"

javascript - React js : this. state.map 不是函数

jquery - 如何在 jQuery 中选择时对 DOM 元素进行排序?

android - 弹性移动 : Different filenames for Android/iOS

css - 链接不可点击,只能在手机上长按

javascript - 是否可以向柱形图中的一个 google-chart 栏添加多个标签?

php - Symfony 和 AJAX 404 响应

通过 Ajax 加载元素上的 Jquery

java - icefaces 移动 TabSetMetaHandler(在 icefaces-mobi 中)类无法访问类 MethodRule(在 icefaces 中)