好的,所以我回到绘图板并尝试使用我已经知道存在的工具来解决问题。每个浏览器(通常没有测试任何非主流浏览器)的情况是,当您在提交表单后按“后退”按钮时,通常会填充文本输入字段。我想看看这是否适用于隐藏的输入字段,事实证明确实如此!
所以接下来我设置了一些 Javascript 事件来监听页面加载。
if($.browser.mozilla)
{
$(window).on('pageshow', pageManager.init);
}
else
{
$(pageManager.init);
}
这适用于 Chrome、Firefox 和 IE9。我还没有测试过任何其他浏览器,但这些是唯一可用于我的私人网站的浏览器,所以对我来说已经足够好了。我相信您可以根据自己的需要设置自己喜欢的解决方案,但这对我来说最有效。
无论如何,上面的代码意味着每次页面加载时,pageManager.init()都会运行。这是我用来检查是否按下后退按钮的代码摘录,它不仅仅是页面刷新或首次访问:
if($('input[name="form_submitted"]').val() != '')
{
// back button was pressed
}
如您所见,它就像检查隐藏的表单字段是否包含值一样简单。要真正保证会设置一个值,请确保在提交表单时设置:
$('#my-form').submit(function()
{
$('input[name="form_submitted"]').val('true');
}
它真的是那么简单。这是我能想到的确定浏览器的后退按钮是否被按下的最佳方法之一。现在,要缓存可见字段的所有表单值,它可以像JSON.stringify()在字段上使用并将其全部粘贴在稍后解码的隐藏字段中一样简单。