Javascript 如何在JQM中有效地使用localStorage

Javascript 如何在JQM中有效地使用localStorage,javascript,jquery,html,jquery-mobile,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 sto

我使用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>

文塔
阿尔基勒
它工作得很好。但问题是,如果我在同一浏览器中打开另一个窗口,它也会保持相同的值。它应该是默认值

有人能解释一下吗


感谢和问候

您这里的问题似乎是您正在使用本地存储,而会话存储是合适的解决方案

本地存储和会话存储在两个完全不同的作用域中运行,本质上意味着本地存储为该域永久保留,而会话存储为该会话临时保留

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


这篇文章在过去帮助我完全理解了这个概念:

嗯。。。本地存储就是这样工作的?在新选项卡中打开会保留相同的会话,其中包括本地存储。改为在另一个浏览器中打开它。哦!我不知道我认为我写错了代码。我不知道它会像那样工作,那么我可能不得不使用php$\u会话[]@Kevinb php会话也将被共享,因为两者都使用相同的Cookies。那么您建议有什么其他方法可以做到这一点?将“localStorage”一词更改为“sessionStorage”,以将刷新时间保持在一个选项卡内