javascript - 如何在JQM中有效使用localStorage

标签 javascript jquery html jquery-mobile

我使用 HTML5 localStorage 来防止下拉框在刷新页面时发生更改,代码如下。

脚本

$(document).on('pagecreate', '#outerPage', function () {
    var local = localStorage.selectVal;
    if (local) {
        var selected = $('body').find('.ui-select-custom');
        //Select the value stored
        $(selected).val(local);
        if (local == 0) {
            $('span.ui-select-custom').html('Venta');
        } else $('span.ui-select-custom').html('Alquiler');
    }
    $(".ui-select-custom").bind("change", function (event, ui) {
        var currentVal = $(this).val();
        localStorage.setItem('selectVal', currentVal);
    });
});

HTML

<select class="ui-select-custom" data-mini="true">
    <option name="im_va" id="im_va" value="0">Venta</option>
    <option name="im_va" id="im_va" value="1">Alquiler</option>
</select>

工作正常。但问题是假设如果我在同一个浏览器中打开另一个窗口,它也会保持相同的值。它应该是默认值。

有人可以解释一下吗

感谢和问候

最佳答案

您的问题似乎是您正在使用本地存储,其中 session 存储是合适的解决方案。

本地存储和 session 存储在两个完全不同的范围内运行,本质上意味着本地存储是为该域永久保留的,而 session 存储是为该 session 临时保留的。

在您的情况下, session 存储是由浏览器窗口或选项卡定义的,因此您会发现从本地存储交换到 session 存储应该可以解决您的问题,并允许选项卡之间有两个单独的存储流。

这篇文章帮助我过去充分理解了这个概念:-link-

关于javascript - 如何在JQM中有效使用localStorage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25196267/

相关文章:

html - 垂直对齐不起作用需要使用 float 属性

Javascript 获取链接文本

javascript - 如何有效地将网络流缓冲到 JavaScript 中的文件中?

jQuery on() 委托(delegate)事件和 Leaflet.js

javascript - 使用 Rangeslider.js 实现 HTML5 音频时间清理器

关于 FLOAT 的 HTML

javascript - 在 iframe 中加载 url 并添加类

javascript - 在 JavaScript 中将 'this' 作为参数传递

javascript - 如何在我的 javascript 生成列表的 <li> 部分中放置更多超链接

javascript - 生成并下载网页截图而不丢失样式